Pro*_*ofK 14 compression sharpziplib
我正在使用以下代码,使用SharpZipLib库将文件添加到.zip文件中,但每个文件都以其完整路径存储.我只需要将文件存储在.zip文件的"root"中.
string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
zipFile.BeginUpdate();
foreach (string file in files)
{
zipFile.Add(file);
}
zipFile.CommitUpdate();
}
Run Code Online (Sandbox Code Playgroud)
在提供的文档中,我找不到任何关于此选项的信息.由于这是一个非常受欢迎的图书馆,我希望有人读这篇文章可能会有所了解.
Pro*_*ofK 22
我的解决办法是设定NameTransform的对象属性ZipFile到ZipNameTransform其TrimPrefix设置为文件的目录.这会导致删除条目名称的目录部分,即完整文件路径.
public static void ZipFolderContents(string folderPath, string zipFilePath)
{
string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
zipFile.NameTransform = new ZipNameTransform(folderPath);
foreach (string file in files)
{
zipFile.BeginUpdate();
zipFile.Add(file);
zipFile.CommitUpdate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
NameTransform属性的类型很酷INameTransform,允许自定义名称转换.
Tam*_*ege 11
如何使用System.IO.Path.GetFileName()结合ZipFile.Add()的entryName参数?
string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
zipFile.BeginUpdate();
foreach (string file in files)
{
zipFile.Add(file, System.IO.Path.GetFileName(file));
}
zipFile.CommitUpdate();
}
Run Code Online (Sandbox Code Playgroud)