如何使用SharpZipLib库仅压缩没有文件夹的文件?(C#)

Jea*_*uis 2 c# sharpziplib

我使用以下代码创建一个zip文件:

var files = Directory.GetFiles(targetPath);
var zip = ZipFile.Create(targetPath + "/myzip.zip");
zip.BeginUpdate();
foreach (var file in files) zip.Add(file, CompressionMethod.Deflated);
zip.CommitUpdate();
zip.Close();
Run Code Online (Sandbox Code Playgroud)

我得到以下存档结构:

myzip.zip
   - Folder1
      - Folder2
        - File1.txt
        - File2.txt
        - File3.txt
Run Code Online (Sandbox Code Playgroud)

但是我需要:

myzip.zip
  - File1.txt
  - File2.txt
  - File3.txt
Run Code Online (Sandbox Code Playgroud)

请帮忙.

typ*_*.pl 6

看看SharpZipLib代码,ZipFile类中有这个方法似乎可以做你想要的:

public void Add(IStaticDataSource dataSource, string entryName, CompressionMethod compressionMethod)

你只需要从文件中得到一个IStaticDataSource,并创建相应的entryName(不包括目录路径),即寻找最后的目录分隔Path.DirectorySeparatorChar场file的字符串和任何之后应该只是你的文件名.

[编辑]澄清:Add(string file, string entryName)当我看到OP在调用中指定了compressionMethod时,我最初建议但编辑了上述方法.但是新zip压缩条目的默认compressionMethod是CompressionMethod.Deflated,因此使用该Add(string file, string entryName)方法应该得到相同的结果,而不必获取IStaticDataSource.