C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C# でZIPの解凍が失敗する

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■84709 / inTopicNo.1)  C# でZIPの解凍が失敗する
  
□投稿者/ はむぞお (1回)-(2017/07/28(Fri) 16:27:07)

分類:[C#] 

[開発環境] Windows10; Visual Studio 2015; C# (.NET Framework 4.5.2)

はじめまして。はむぞおと申します。

C#でSystem.IO.Compression.ZipFileを使ってZIPファイルを解凍をすると、特定のファイルのみ解凍に失敗するので困っています。

System.IO.Compression.ZipFile.ExtractToDirectory(ZIPファイルのパス, 解凍先フォルダのパス, Encoding.GetEncoding("shift_jis"));

→「型'System.IO.InvalidDataException'のハンドルされていない例外がSystem.dllで発生しました。
追加情報:デコード中に無効なデータが見つかりました」


・他のZIPファイルは問題なく解凍出来ます
・中身(元のCSVファイル)のサイズは、2GB(2,150,696,512B)。圧縮後のサイズは308MB ←このZIPのみ失敗
・失敗するZIPファイルを右クリック→[すべてを展開]では解凍する事が出来ます。
→編集も可能なのでファイルが破損している訳では無さそう

※ちなみに元のCSVを右クリック→[送る]→[圧縮(ZIP形式)フォルダー]での圧縮は可能


命令の書き方が悪いのでしょうか。
それとも何かしらの制限に引っかかってるのでしょうか・・?

解決の糸口が見つかればと思い、投稿させていただきました。
よろしくお願い致します。



引用返信 編集キー/
■84713 / inTopicNo.2)  Re[1]: C# でZIPの解凍が失敗する
□投稿者/ 774RR (552回)-(2017/07/28(Fri) 21:07:56)
3引数の ExtractToDirectory() は、それが必要な時だけ使えとある。
https://msdn.microsoft.com/ja-jp/library/hh875102.aspx

なんとなく妄想するに、その zip アーカイブに格納されているファイルは、ファイル名のどこかに
CP932 に無い文字を使っているんとちゃう?だから CP932 (shift_jis) を指定すると失敗するとか。

素直に2引数の ExtractToDirectory() を使えばいけたりしない?

引用返信 編集キー/
■84728 / inTopicNo.3)  Re[2]: C# でZIPの解凍が失敗する
□投稿者/ はむぞお (3回)-(2017/07/31(Mon) 11:53:14)
No84713 (774RR さん) に返信
> 3引数の ExtractToDirectory() は、それが必要な時だけ使えとある。
> https://msdn.microsoft.com/ja-jp/library/hh875102.aspx
>
> なんとなく妄想するに、その zip アーカイブに格納されているファイルは、ファイル名のどこかに
> CP932 に無い文字を使っているんとちゃう?だから CP932 (shift_jis) を指定すると失敗するとか。
>
> 素直に2引数の ExtractToDirectory() を使えばいけたりしない?
>

774RRさん、お返事ありがとうございます。

土日、掲示板を開ける環境に居なかった関係でお返事遅くなってしまいました。
申し訳ございません。

エンコードを指定しても指定しなくてもエラーになりました。

出来ればSystem.IO.Compression.ZipFileでやりたかったのですが、7-Zipでは解凍できるようなので7-Zipで解凍しようと思います。

両者にどのような機能の差があるのかよく分かりませんが・・・とりあえず解決という事に致します。

ありがとうございました。




解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ