C#でGZIP形式を使用してファイルを圧縮・解凍する方法
C#でGZIP形式によるファイルの圧縮・解凍を行うには、GZipStreamクラスを使用します。この記事では、FileStreamクラスと組み合わせて、実際にファイルを圧縮・解凍する具体的な手順とサンプルコードを紹介します。
ファイルの圧縮
ファイルを圧縮(ZIP化)するには、GZipStreamクラスをFileStreamクラスと併用します。あらかじめ、以下のパラメータを準備しておきましょう。
- 圧縮元となるファイル
- 出力先の圧縮ファイル名
ここでは、outputFileが出力ファイルを表し、圧縮元のファイルはFileStreamとして読み込まれます。その後、GZipStreamにCompressionMode.Compressを指定し、ストリームへデータを書き込むことで圧縮が完了します。
圧縮のコード例
using(var compress = new GZipStream(outputFile, CompressionMode.Compress, false)) {
byte[] b = new byte[inFile.Length];
int read = inFile.Read(b, 0, b.Length);
while (read > 0) {
compress.Write(b, 0, read);
read = inFile.Read(b, 0, b.Length);
}
}
このコードでは、読み込んだデータをバッファに格納しながらループ処理を行い、ストリームの終端まで順次書き込んでいます。大きなファイルでもメモリを効率的に使用できるのが特徴です。
ファイルの解凍
ファイルを解凍する場合も、同じくGZipStreamクラスを使用します。必要なパラメータは、解凍対象のソースファイルと、出力先のファイル名です。
まず、圧縮済みのZIPファイルからGZipStreamを開きます。
using (var zip = new GZipStream(inStream, CompressionMode.Decompress, true))
解凍処理では、ストリーム内にデータが残っている限りループで読み込み続けます。読み取ったデータを出力ストリームへ書き込むことで、解凍後のファイルが生成されます。
解凍のコード例
using(var zip = new GZipStream(inputStream, CompressionMode.Decompress, true)) {
byte[] b = new byte[inputStream.Length];
while (true) {
int count = zip.Read(b, 0, b.Length);
if (count != 0)
outputStream.Write(b, 0, count);
if (count != b.Length)
break;
}
}
まとめ
GZipStreamクラスを使えば、CompressionMode.Compressで圧縮、CompressionMode.Decompressで解凍と、シンプルなコードでGZIP形式のファイル操作が実現できます。バックアップファイルの作成やログファイルのサイズ削減など、さまざまな場面で活用できるので、ぜひ実装してみてください。
-
ZArchiverでAndroidのファイルを圧縮・解凍する方法
Android端末では、メールで受信したファイルやダウンロードしたファイルのすべての形式を開けるとは限りません。ファイルを圧縮する場合も同様です。ファイルの種類によっては、これが大きな不便につながることがあります。一部のファイルマネージャーではzipファイルの圧縮・解凍に対応していますが、rarや7z形式のファイルを開きたい場合はどうすればよいのでしょうか。そこで便利なのが「ZArchiver」です。このアプリを使えば、標準のファイルマネージャーが対応していない場合でも、Android上でファイルの圧縮と解凍を自由に行えます。Androidでファイルを圧縮する方法圧縮フォルダを作成する手順は、
-
VLCを使って音声・動画ファイルを自由に形式変換する方法
VLCは、あらゆるファイル形式を再生できる最高のメディアプレイヤーの一つとして知られています。インターフェースの見た目は決して華やかではありませんが、その高い再生能力ゆえに多くのユーザーから第一の選択肢となっています。しかし、VLCが単なるメディアプレイヤーではなく、強力な「形式変換ツール」でもあることをご存じの方は少ないのではないでしょうか。実は、VLCを使えば音声・動画ファイルを好みの形式へ自由に変換することができます。音楽や映画が趣味の方なら、音声や動画を別の形式に変換するのがいかに面倒かをご存じでしょう。現在使っているソフトが目的の形式に対応していない場合、新たに有料プログラムを購入し