1

我想使用 Ionic Zip 在 C# 中打包一个目录。通常我只会使用这段代码:

using (ZipFile pack = new ZipFile())
{      
    pack.AddDirectory(defPackageCreationPath + "\\installfiles", "");            
    pack.Save(outputPath + "\\package.mpp");
}

这工作正常,但是我需要遍历每个被打包的文件以检查其文件名中的字符,因为我有一些文件在打包时会损坏,如果它们包含特定字符。

同样重要的是要添加的目录也包含子目录,这些子目录需要转移到 zip 文件中并在其中创建。

如何?

4

2 回答 2

1

不确定这是否是您要查找的内容,但您可以轻松获取所有文件(包括子目录)的字符串数组。使用目录类

像这样

string[] Files = Directory.GetFiles(@"M:\Backup", "*.*", SearchOption.AllDirectories);

foreach (string file in Files)
{
    DoTests(file);
}

这将包括文件的路径。

您将需要 System.IO;

using System.IO;
于 2013-10-17T13:58:49.013 回答
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");
    }
}
于 2013-10-17T14:19:35.640 回答