2017-10-04 25 views
-1

を異なります書かれたファイル。バイト配列は

しかし、私は文字列にファイルの内容を読み、

機能以下
string s = File.ReadAllText(filePath); 
    var byteArr = System.Text.Encoding.UTF8.GetBytes(s); 

を使用してバイト配列に変換した場合、バイト配列のサイズは、以前の配列をファイルから直接読み込むと値もよりも多くありますiは

を開いたときザを読み取ることができない、この配列を使用してファイルを書き込む場合は異なるが、それ故に - をコードUTF-8であるファイルIはコード

の下に使用していることが判明しました

両方の配列が異なる理由を理解することができません?

私は変換して、あなたがvar encodingがちょうどEncoding.UTF8パラメータをエコーし​​ます

using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8, true)) 
{ 
    reader.Peek(); // you need this! 
    var encoding = reader.CurrentEncoding; 
} 

image

+2

あなたはここで何を期待していますか?画像ファイルに対してReadAlltext()を使うだけでは意味がありません。 –

+0

ファイルを保存する必要があります画像またはテキスト何かがあります。 –

+0

ファイルのデータを保存するためにfilestreamを使用しており、必要なときにファイルを取得する必要があります –

答えて

2

を書き込むために、以下の添付された画像を使用していました。あなたはそこに自分を欺いている。

バイナリファイルにはテキストエンコーディングがありません。


ファイルを保存する必要があり、画像やテキスト

は、それからちょうどReadAllBytes/WriteAllBytesを使用するものかもしれません。テキストファイルは常にbyte[]ですが、すべてのファイルタイプがテキストであるとは限りません。最初にBase64エンコーディングが必要になり、それがちょうどサイズに追加されます。

1

バイト配列を文字列に変換する最も安全な方法は、実際にはbase64のようなコードでそれをエンコードすることです。 Like:

文字列s = Convert.ToBase64String(bytes);

バイト[] bytes = Convert.FromBase64String(s);