中央ディレクトリレコードの終了が見つかりませんでした 質問する

中央ディレクトリレコードの終了が見つかりませんでした 質問する

C#プログラムを使用してzipファイルをダウンロードしていますが、エラーが発生します

at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()
   at System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode,
Boolean leaveOpen)
   at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode,
 Boolean leaveOpen, Encoding entryNameEncoding)
   at System.IO.Compression.ZipFile.Open(String archiveFileName, ZipArchiveMode
mode, Encoding entryNameEncoding)
   at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName, Encoding entryNameEncoding)
   at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName)

プログラムはこちら

    response = (HttpWebResponse)request.GetResponse();
    Stream ReceiveStream = response.GetResponseStream();
    byte[] buffer = new byte[1024];
    FileStream outFile = new FileStream(zipFilePath, FileMode.Create);
    int bytesRead;
    while ((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
        outFile.Write(buffer, 0, bytesRead);
    outFile.Close();
    response.Close();
    try
    {
        ZipFile.ExtractToDirectory(zipFilePath, destnDirectoryName);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
        Console.ReadLine();
    }

エラーが理解できません。誰か説明してもらえますか? ありがとう、MR

ベストアンサー1

問題は、ZipFileアーカイブの終了を通知するコード行が見つからないことです。そのため、次のいずれかが発生します。

  1. これは .zip アーカイブではありません。

    • .rarやその他の圧縮形式かもしれません。あるいは、私がここで疑っているように、自動的に zip ファイルにリダイレクトされる HTML ファイルをダウンロードする
    • 解決策 - このコードを使用するには正しいアーカイブを見つける必要があります。
  2. アーカイブが破損しています。

    • 解決策 - アーカイブを修復する必要があります。
  3. アーカイブには複数の部分があります。

    • 複数の部分からなる zip ファイル。
    • 解決策 - 解凍する前にすべてのファイルを読み込みます。
  4. @ElliotSchmelliot がコメントで指摘しているように、ファイルは非表示になっているか、名前に拡張文字が含まれている可能性があります。

    • 解決策 - ファイルの属性/権限を確認し、ファイル名を確認します。

お気に入りの zip/unzip ユーティリティ (7-zip、winzip など) を使用してファイルを開くと、それがどの形式であるかがわかります。

おすすめ記事