Chromium 解压压缩包

转载:https://blog.csdn.net/jshiya/article/details/105999382

build加

"//third_party/zlib/google:zip",

src/third_party/zlib/google该目录下是google为Chromium封装实现的zlib。

//将指定的ZIP文件压缩到ZIP档案中。 | params |中指定了源文件和ZIP目标文件(以及其他设置)。
bool Zip(const ZipParams& params);

// 不需要过滤器的方法
//将src_dir的内容压缩到dest_file中。 src_dir必须是目录。
// src_dir 需要被压缩的文件目录,;dest_file 压缩后保存的文件。
//如果|include_hidden_files|:= true 将包含以“.”开始的文件如(“.123”),= false 不包括隐藏文件。

bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
         bool include_hidden_files);
zip::Zip(base::FilePath(L"C:\\123"), base::FilePath(L"D:\\123.ZIP"), false);

//将src_dir的内容压缩到dest_file中。 src_dir必须是目录。
// src_dir 需要被压缩的文件目录,;dest_file 压缩后保存的文件。
// | filter_cb | := true 不过滤某些文件,,= false 过滤某些文件。

    using FilterCallback = base::RepeatingCallback<bool(const base::FilePath&)>;        
    bool ZipWithFilterCallback(const base::FilePath& src_dir, const base::FilePath& dest_file, const FilterCallback& filter_cb)
    bool IsHiddenFile(const base::FilePath& file_path) {
        return file_path.BaseName().value()[0] == ',';//过滤掉以逗号“,”开头的文件
    }

    bool ExcludeHiddenFilesFilter(const base::FilePath& file_path) {
        return !IsHiddenFile(file_path);
    }
    int main() {
        zip::FilterCallback filter_cb =base::BindRepeating(&ExcludeHiddenFilesFilter);
        zip::ZipWithFilterCallback(base::FilePath(L"C:\\123"),base::FilePath(L"C:\\1234.ZIP"), std::move(filter_cb));
        return 0;
    }

//将 | zip_file | 解压到 | dest_dir | 。

    bool Unzip(const base::FilePath& zip_file, const base::FilePath& dest_dir);
    zip::Unzip(base::FilePath(L"C:\\1234.ZIP"), base::FilePath(L"C:\\1234"));

 

posted @ 2022-07-14 20:07  冰糖葫芦很乖  阅读(210)  评论(0编辑  收藏  举报