我使用以下代码创建一个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)
请帮忙.
看看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.
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |