web-dev-qa-db-ja.com

ionic.zipを使用してZipファイルを作成する

一連のドキュメントの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で保持する方法を教えてください。

14
Richard.Gale

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

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

したがって、Zipアーカイブのルートに常にファイルを追加する場合は、変更します

loanZip.AddFiles(documentPaths, false, zipDestinationPath);

loanZip.AddFiles(documentPaths, false, "");
19
Treb