質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

Q&A

解決済

1回答

1444閲覧

【C#】Webからダウンロードしてきたlhaplusを解凍したい

Ryukkef

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

0グッド

0クリップ

投稿2018/09/18 13:16

前提・実現したいこと

httpClientを使用してweb上からファイルをダウンロード、解答までを行いたいのですが、解凍時に例外が発生しています。
どうすれば解凍できるのかが知りたいです。

発生している問題・エラーメッセージ

System.IO.InvalidDataException: '中央ディレクトリの終わりレコードが見つかりません。'

該当のソースコード

C#

1private async void btnUpdate_Click(object sender, EventArgs e) 2{ 3 //DatePickerの値をそのまま使うと同値で入力した場合に意図した比較ができない為年月日のみを持った日付データを作成する 4 var dateFrom = new DateTime(dtpFrom.Value.Year, dtpFrom.Value.Month, dtpFrom.Value.Day); 5 var dateTo = new DateTime(dtpTo.Value.Year, dtpTo.Value.Month, dtpTo.Value.Day); 6 7 for (var date = dateFrom; date.CompareTo(dateTo) <= 0; date = date.AddDays(1)) 8 { 9 var fileName = $"k{date.Year.ToString().Substring(2)}{date.Month,2:D2}{date.Day,2:D2}"; 10 var uri = $"http://www1.mbrace.or.jp/od2/K/{date.Year}{date.Month,2:D2}/" + fileName + ".lzh"; 11 12 // 一時ディレクトリ下に配置するファイルtemp.lzhのフルパスを作成する 13 var tempfile = Path.Combine(Path.GetTempPath(), fileName + ".lzh"); 14 var res = await _httpClient.GetAsync(uri); 15 16 using (var fileStream = File.Create(tempfile)) 17 using (var httpStream = await res.Content.ReadAsStreamAsync()) 18 { 19 httpStream.CopyTo(fileStream); 20 fileStream.Flush(); 21 } 22 23 //↓ここで「中央ディレクトリの終わりレコードが見つかりません」と例外が表示される 24 ZipFile.ExtractToDirectory(tempfile, Path.GetDirectoryName(tempfile)); 25 } 26}

試したこと

・ラプラス自体をインストールしていなかったので、まずはインストールをしました。
・一通り調べましたが、情報として見つかりませんでした。
・解凍後、zip形式で再度圧縮をかけたファイルに対してExtractToDirectoryをしてみましたがうまくいきませんでした。

補足情報

ダウンロードしようとしているのは、以下のようなURLです。
http://www1.mbrace.or.jp/od2/K/201809/k180918.lzh

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Zipではないので、ZipFileでは解凍できません。

C#でLZHの圧縮・解凍などをご参考に

投稿2018/09/18 13:28

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryukkef

2018/09/18 14:35

ありがとうございます! 無事、解凍することができました!! 上記のサイトまで全然たどりつけず、お恥ずかしい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問