1. ホーム
  2. c#

[解決済み】.netでプログラム的にファイルを解凍する。

2022-04-01 09:05:35

質問

ZIP形式のファイルをプログラムで解凍しようとしています。

を使ってみました。 System.IO.Compression.GZipStream クラスがありますが、私のアプリを実行すると(実際にはユニットテスト)、この例外が発生します。

System.IO.InvalidDataException: GZipヘッダのマジックナンバーが正しくありません。GZipストリームを渡していることを確認してください。

今になって気づいたのですが .zip ファイルは .gz ファイルであり、その GZipZip .

しかし、zipファイルを手動でダブルクリックして、"Extract all files"-ボタンをクリックすればファイルを展開できるので、コードでそれを行う方法もあるはずだと思うのですが、どうでしょうか?

そのため、私が試したのは Process.Start() を入力とし、zipファイルのパスを指定します。これにより、私のアプリは、Zipファイルのコンテンツを表示するWindowを開くことになります。しかし、このアプリはサーバーにインストールされ、誰も "Extract all files"-button をクリックする人がいないでしょう。

では、どうすればアプリにzipファイル内のファイルを展開させることができるのでしょうか?

それとも他に方法があるのでしょうか?サードパーティのライブラリやアプリをダウンロードせずに、コードでやるのがいいんですが、セキュリティ部門はそれについてあまり気にしていないようで・・・。

解決方法は?

私たちは シャープZipLib 多くのプロジェクトで成功しています。サードパーティのツールですが、ソースコードが含まれており、ここで車輪を再発明することを選択した場合、いくつかの洞察を提供することができます。