4

DotNetZip dllを使用して、C#で非常に単純なプログラムを作成しました。最適な圧縮を選択するzipファイルを抽出しようとしています。これがコードです。

static void Main(string[] args)
    {
        string nameOfFile = "testBest.zip";
        string directory = "testBest";

        Console.WriteLine("Extracting file {0} to {1}", nameOfFile, directory); 

        using (ZipFile zip = ZipFile.Read(nameOfFile))
        {
            foreach (ZipEntry e in zip)
            {
                e.Extract(directory, ExtractExistingFileAction.OverwriteSilently);
            }
        }
    }

また、エラーは、txtファイルの1つがサポートされていない圧縮方法を使用していることを示しています。

最高の圧縮を使用している場合、DotNetZipライブラリはzipファイルを抽出できませんか?これを処理する方法はありますか?選択肢は何ですか?

4

2 に答える 2

3

使用されているzip圧縮は、サポートされている圧縮の1つではないと思います。これが当てはまるフォーラム投稿の例は次のとおりです:http: //dotnetzip.codeplex.com/discussions/64680

この場合、DEFLATEの代わりにDEFLATE64の圧縮が使用され、表示されているのと同じエラーが発生します。エラーテキスト全体がより役立つでしょうが、おそらく同じことになるでしょう-ライブラリはあなたの圧縮方法をサポートしていません。

于 2011-05-05T15:21:29.920 に答える
0

ちょっとここで私はextractメソッドを作成しました。c:\ temp\temp.zipのようなディレクトリのフルパスを指定する必要があります

  public void MyExtractZip(string FileName,string Password)
        {
            string ExtractLocation = string.Empty;
            using (ZipFile zip = ZipFile.Read(FileName))
            {
                // here, we extract every entry, but we could extract conditionally
                // based on entry name, size, date, checkbox status, etc. 
                string ArchiveName =Path.GetFileNameWithoutExtension(FileName);
                Console.WriteLine("[1] Extract Here [2] Extract too [3] Extract to "+ArchiveName);
                Console.WriteLine("\n");
                Console.Write("Select your option :: \t");
                 string entry = Console.ReadLine();
                 int n = int.Parse(entry);

                string Location =string.Empty;
                if (n == 2)
                {
                    Console.Write("Enter the Location ::" );
                    Location = Console.ReadLine();

                }
                Console.Write("\n");
                switch (n)
                {
                    case 1:
                        ExtractLocation=Path.GetDirectoryName(FileName);
                        break;
                    case 2:
                        ExtractLocation = Location + "\\"; 
                        break;
                    case 3:
                        ExtractLocation = Path.GetDirectoryName(FileName) + "\\"+Path.GetFileNameWithoutExtension(FileName);
                        break;
                }
                zip.Password = Password;
                foreach (ZipEntry e in zip)
                {
                    e.Extract(ExtractLocation, ExtractExistingFileAction.OverwriteSilently);
                }

            }
        }
于 2011-11-09T10:05:49.867 に答える