DotNetZip 创建包含文件路径的子文件夹

DotNetZip Creates Subfolders Containing the File Paths

.zip一个文件使用DotNetZip,但里面包含实际文件路径的子文件夹。

示例:打开 Zip >(用户)文件夹 >(管理员)文件夹 >(桌面)文件夹 > file1.csv

我可以知道我应该在哪里更改为 .zip 只包含文件本身吗?

using (ZipFile zip = new ZipFile())
{
    zip.Password = "password";
    zip.AddFile("C:\Users\Admin\Desktop\File1.csv");
    zip.Save("Encrypted_File1.zip");
}

我不确定如何更改 .AddFile 语句,因为其他任何地方都没有文件路径声明。

基于documentation,我相信你需要这样写:

using (ZipFile zip = new ZipFile())
{
    zip.Password = "password";
    zip.AddFile("C:\Users\Admin\Desktop\File1.csv", "Admin\Desktop\File1.csv");
    zip.Save("Encrypted_File1.zip");
}

P.S。如果你正在处理很多文件并且你有一个共同的基本路径,你可以使用类似 Path.GetRelativePath 的东西来获取 in-zip 路径:

using (ZipFile zip = new ZipFile())
{
    string commonBasePath = "C:\Users";

    // for each file
    string filePath = "C:\Users\Admin\Desktop\File1.csv";
    string inZipPath = Path.GetRelativePath(commonBasePath, filePath);
    zip.Password = "password";
    zip.AddFile(filePath, inZipPath);
    // done

    // save
    zip.Save("Encrypted_File1.zip");
}