我想使用Ionic Zip在C#中打包一个目录。通常我会使用这段代码:
using (ZipFile pack = new ZipFile())
{
pack.AddDirectory(defPackageCreationPath + "\\installfiles", "");
pack.Save(outputPath + "\\package.mpp");
}
这很好用,但我需要遍历打包的每个文件来检查文件名中的字符,因为我有一些文件在打包时会被破坏,如果它们包含特定的字符。
重要的是,要添加的目录也包含子目录,需要将这些目录转移到zip文件并在其中创建。
如何?
答案 0 :(得分:1)
不确定这是否是您要查找的内容,但您可以轻松获取包含子目录在内的所有文件的字符串数组。使用目录类
喜欢这样
string[] Files = Directory.GetFiles(@"M:\Backup", "*.*", SearchOption.AllDirectories);
foreach (string file in Files)
{
DoTests(file);
}
这将包括文件的路径。
您将需要System.IO;
using System.IO;
答案 1 :(得分:0)
你也可以尝试这样的事情:
using (ZipFile pack = new ZipFile())
{
pack.AddProgress += (s, eventArgs) =>
{
// check if EventType is Adding_AfterAddEntry or NullReferenceException will be thrown
if (eventArgs.EventType == ZipProgressEventType.Adding_AfterAddEntry)
{
// Do the replacement here.
// eventArgs.CurrentEntry is the current file processed and
// eventArgs.CurrentEntry.FileName holds the file name
//
// Example: all files will begin with __
eventArgs.CurrentEntry.FileName = "___" + eventArgs.CurrentEntry.FileName;
}
};
pack.AddDirectory(defPackageCreationPath + "\\installfiles", "");
pack.Save(outputPath + "\\package.mpp");
}
}