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 に答える