17

ドキュメントのセットの zip ファイルを作成するために、次のコードを設定しました。

    public bool CreateDocumentationZipFile(int documentIdentifier, string zipDestinationPath, IList<string> documentPaths)        
    {
        bool zipped = false;

        if (documentPaths.Count > 0)
        {
            using (ZipFile loanZip = new ZipFile())
            {
                loanZip.AddFiles(documentPaths, false, zipDestinationPath);
                loanZip.Save(string.Format("{0}{1}.zip",zipDestinationPath, documentIdentifier.ToString()));
                zipped = true;
            }
        }

        return zipped;
    }

私が抱えている問題は、zip ファイルが作成されると、フォルダー構造が zip ファイル内で維持されることです。

例えば

にあるドキュメントの選択の zip を作成しています

C:\SoftwareDevelopment\Branches\ScannedDocuments\

作成したzipファイルを開くと、zip内に以下のようなフォルダ構造があります。

フォルダ 1 (「SoftwareDevelopment」)

内部フォルダー 1 はフォルダー 2 (「ブランチ」)

フォルダー 2 の内部はフォルダー 3 ("ScannedDocuments") です。

スキャンされたドキュメント フォルダには、実際のスキャン ファイルが含まれます。

フォルダーパスを維持せずにスキャンファイルをzipに入れる方法を誰か教えてもらえますか?

4

1 に答える 1

23

ドキュメントには、3番目のパラメーターが

directoryPathInArchive (文字列)
ファイル名のパスをオーバーライドするために使用するディレクトリ パスを指定します。このパスは、現在のファイルシステムの実際のディレクトリに対応している場合と、対応していない場合があります。zip 内のファイルが後で抽出される場合、これは抽出されたファイルに使用されるパスです。null (VB では Nothing) を渡すと、各ファイル名のパスがあればそれが使用されます。空の文字列 ("") を渡すと、アーカイブ内のルート パスにアイテムが挿入されます。

したがって、ファイルを常に zip アーカイブのルートに追加したい場合は、次のように変更します。

loanZip.AddFiles(documentPaths, false, zipDestinationPath);

loanZip.AddFiles(documentPaths, false, "");
于 2013-03-08T10:14:53.667 に答える