Zip for .NET
C1ZStreamReader クラスと C1ZStreamWriter クラス
製品の概要 > C1ZStreamReader クラスと C1ZStreamWriter クラス

これらのクラスでは、Zip ファイル内のデータはもちろん、あらゆる .NET ストリーム上でデータ圧縮を使用できます。

C1ZStreamReaderオブジェクトと C1ZStreamWriter オブジェクトを使用するには、これらのオブジェクトを通常のストリームに付加し、これらを介してデータの読み取りと書き込みを行います。データは基底のストリームに対してオンザフライで圧縮(または展開)されます。

この設計により、ネイティブの .NET ストリームとうまく統合できます。その仕組みは以下の図のようになります。


たとえば、以下のコードでは ADO.NET DataTable オブジェクトをストリームに保存してから、それを再度読み取っています。

Visual Basic コードの書き方

Visual Basic
コードのコピー
' DataTable を圧縮ストリームに保存します。
Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim fout As New FileStream("test.tmp", FileMode.Create)
bf.Serialize(fout, DataTableOut)
fout.Close()
' 圧縮データを読み取ります。
Dim fin As New FileStream("test.tmp", FileMode.Open)
Dim DataTableIn As DataTable = bf.Deserialize(fin)

C# コードの書き方

C#
コードのコピー
//DataTable を圧縮ストリームに保存します。
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
FileStream fout = new FileStream("test.tmp", FileMode.Create);
bf.Serialize(fout, DataTableOut);
fout.Close();
//圧縮データを読み取ります。
FileStream fin = new FileStream("test.tmp", FileMode.Open);
DataTable DataTableIn = (DataTable)bf.Deserialize(fin)

データ圧縮を追加するには、以下の2行のコードを追加するだけです。

Visual Basic コードの書き方

Visual Basic
コードのコピー
'DataTable を圧縮ストリームに保存します。
Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim fout As New FileStream("test.tmp", FileMode.Create)
Dim compressor As New C1ZStreamWriter(fout)
bf.Serialize(compressor, DataTableOut)
fout.Close()
'圧縮データを読み取ります。
Dim fin As New FileStream("test.tmp", FileMode.Open)
Dim decompressor As New C1ZStreamReader(fin)
Dim DataTableIn As DataTable = bf.Deserialize(decompressor)

C# コードの書き方

C#
コードのコピー
//DataTable を圧縮ストリームに保存します。
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
FileStream fout = new FileStream("test.tmp", FileMode.Create); C1ZStreamWriter compressor = new C1ZStreamWriter(fout); bf.Serialize(compressor, DataTableOut);
fout.Close(); //圧縮データを読み取ります。 FileStream fin = new FileStream("test.tmp", FileMode.Open); C1ZStreamReader decompressor = new C1ZStreamReader(fin); DataTable DataTableIn = (DataTable)bf.Deserialize(decompressor)