0

物乞いで、私の目標は何かを指摘したいと思います-カタログの構造をそのまま維持して分割(非)圧縮アーカイブを作成することです。

私はいくつかのライブラリをチェックしましたが、SevenZipSharp が私のやり方に最も近いようです。

現在、次のようなコードがあります。

public static void PackFiles()
    {
        string dll = @"C:\Users\MyUsername\Downloads\7zip32b\7z.dll";

        SevenZipCompressor.SetLibraryPath(dll);
        SevenZipCompressor compressor = new SevenZipCompressor();
        compressor.ArchiveFormat = OutArchiveFormat.SevenZip;
        compressor.CompressionMode = CompressionMode.Create;
        compressor.TempFolderPath = System.IO.Path.GetTempPath();
        compressor.VolumeSize = 1 * 1024 * 1024;
        //compressor.CompressDirectory(defaultContentFolder, (defaultReadyZipFolder + zipName + ".zip"));
        // THIS ONE IS WORKING, BUT PACKS WHOLE FOLDER INSIDE ARCHIVE..

        string[] files = Directory.GetFiles(defaultContentFolder,"*.*",SearchOption.AllDirectories);

        compressor.CompressFiles(@"C:\Users\MyUsername\Packed\ArchiveName", files);

        Console.WriteLine("Zipped!");
    } 

というわけで、上でコメントしたとおりです。使用するcompressor.CompressDirectoryと、分割される別のアーカイブ内にパックされたフォルダー全体を圧縮することができました。全然かわいくない…

そこで、dir 内のファイルのリストを彼に渡して、それらを 1 つのアーカイブとしてパックすることを考えましたが、うまくいきません。

デバッグすると、コンパイラはCompressFilesメソッドを実行するだけですが、スキップされたか何かのように、コードの他の部分にはまったく入力しません... files パラメータは実際にはファイルパスの配列から構成されているので、その部分は問題ありませんか?

そこで何が起こっているのですか?それとも、チェックする別のソリューションですか?

前もって感謝します!

4

1 に答える 1

0

これが役立つかどうかはわかりませんが、掘り下げた後、この小さな記事を見つけました ここ

http://www.cupofdev.com/compress-files-7zip-csharp/

sevenZipCompressor.CompressDirectory();

ファイルを分割するのではなく、圧縮ディレクトリがディレクトリを圧縮する必要があります

于 2015-10-08T13:15:46.650 に答える