プログラムで圧縮方式をデータに適用すると、この問題は全面的に解決されています...多くのサイトを検索していますが、私にとっては何もしていないようです。私の最新の発見のためにインプログラムの圧縮/解凍
、私が持っている: Simple object to byte[] & byte[] to object methods(I prefer these) & A rather more complex class extension
彼らの両方が非常によく圧縮するが、解凍時にエラーをスローするように見えます。
私の目標: - >ファイルをメモリに圧縮して書き込みます。 - >ファイルから読み取り、データを圧縮解除します。
これを使用する主なプログラムは、オブジェクトがすべて< CARD>タグで区切られた文字列です。各オブジェクトには、DATA>タグ<で区切られた6つの文字列と1つの画像(文字列に変換された画像)が含まれています。
私は、これはコードです...最後に適用する前に実験する簡単な「試験」プログラムを書いた:
private void btnCompress_Click(object sender, EventArgs e)
{
try
{
Encoding enc = new UTF32Encoding();
richTextBox1.Text = enc.GetString(CompressionStyle2.Compress(richTextBox1.Text));
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
private void btnDecompress_Click(object sender, EventArgs e)
{
try
{
Encoding enc = new UTF32Encoding();
richTextBox1.Text = (string)CompressionStyle2.Decompress(enc.GetBytes(richTextBox1.Text));
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
(私はダミーのプログラムの効率化についてはあまり気にしない - 私はないようにしようけれどもやっかいな仕事をする)
私は何が間違っているのでしょうか?
私は初めてのことでしたが、今日の私の最初のエラーのポイントまで進んでいます: "ベース64文字列には、非ベース64文字、2つ以上のパディング文字、または非ホワイトパディング文字の中に空白文字が含まれています。それはどちらかといえばあまり圧縮していないようです...私はこれを最近試みました:(文字列)CompressionStyle2.Decompress(CompressionStyle2.Compress(temp)) – TekuConcept
@ Teeku:あなたはBase64の機能を後方に使ったように思えます。圧縮後にエンコードし、解凍する前にデコードする必要があります。 –
これは動作します: ファイルから:MemoryStream main = new MemoryStream(); file.CopyTo(main);文字列temp =(文字列)解凍(main.GetBuffer()); ファイルへ:BinaryWriter writer = new BinaryWriter(file); writer.Write(圧縮(データ)); – TekuConcept