前提・実現したいこと
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

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/18 14:35