2011-02-07 71 views
2

我用下面的代码创建一个zip文件:如何仅使用SharpZipLib库压缩没有文件夹的文件? (C#)

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 

帮助请。

回答

6

望着SharpZipLib代码,有这种方法在zip文件类这似乎做你想要的:

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

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

澄清:我原本建议Add(string file, string entryName),但编辑上述方法,当我看到OP是在指定一个compressionMethod在调用。但是新的zip条目的默认compressionMethod是CompressionMethod.Deflated,所以使用Add(string file, string entryName)方法应该得到相同的结果,而不必获得IStaticDataSource。

+0

谢谢!我将这样使用:zip.Add(file,Path.GetFileName(file)); – 2011-02-07 17:55:36