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

如何使用SharpZipLib库仅压缩没有文件夹的文件?(C#),c#,sharpziplib,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(); 我得到了以下存档结构: m

我使用以下代码创建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();
我得到了以下存档结构:

myzip.zip
   - Folder1
      - Folder2
        - File1.txt
        - File2.txt
        - File3.txt
但我需要:

myzip.zip
  - File1.txt
  - File2.txt
  - File3.txt

请提供帮助。

查看SharpZipLib代码,ZipFile类中有一个方法似乎可以实现您想要的功能:

public void Add(IStaticDataSource数据源、字符串入口名、CompressionMethod CompressionMethod)

您只需从该文件中获取IStaticDataSource,并创建相应的entryName(不包括目录路径),即在
文件中搜索最后一个目录分隔符
字符串,之后的任何内容都应该是您的文件名


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

谢谢!我将使用so:zip.Add(文件,Path.GetFileName(文件));