2013-11-14 38 views
-2

我已經在Notepad ++中打開一個文件,它看起來像附加的圖像。這些符號代表什麼? HEX/ASCII /二進制?我想閱讀和寫入一個單獨的文件。我使用StreamReader和StreamWriter並逐字讀取字符,但生成的文件具有與輸入文件不同的符號。解釋和讀取任何文件類型在c#

由於文件大小很大,我想使用流。 enter image description here

+2

那麼輸入文件是什麼?如果它不是一個文本文件 - 或者不在編碼中,那麼你就是在讀它 - 那麼這個垃圾確實就是結果。 –

回答

0

這是二進制數據,它可以表示任何東西。不知道,它只是一系列字節,其中一個字節是一個8位數字。它可以是代表作爲字符(以任意數量的編碼),作爲十六進制數字或甚至打卡。

如果你想讀/寫二進制數據,那麼FileStream是你的朋友。 StreamReader/Writer是面向字符的。當只有ASCII編碼時,字符曾經相當於舊時代的字節,但現在不再是這種情況了。請參閱http://www.joelonsoftware.com/articles/Unicode.html

2

如果你只是想複製確切的二進制數據,而不關心它是否是文本,你應該使用Stream。例如:

using (var input = Stream.OpenRead(inputFile)) 
using (var output = Stream.OpenWrite(outputFile)) 
{ 
    input.CopyTo(output); 
} 

當您使用StreamWriter,你在一個特定的編碼解釋數據文本數據 - 如果它不是文本,或者它不是在該編碼,那麼你最終會與垃圾,基本上。