我在Notepad ++中打开了一个文件,它看起来像附加的图像。这些符号代表什么? HEX / ASCII /二进制?我想阅读并写一个单独的文件。我使用StreamReader和StreamWriter并按字符读取字符,但结果文件的符号与输入文件不同。
由于文件大小很大,我想使用stream。
答案 0 :(得分:2)
如果您只想复制确切的二进制数据,而不关心它是否是文本,那么您应该使用Stream
。例如:
using (var input = Stream.OpenRead(inputFile))
using (var output = Stream.OpenWrite(outputFile))
{
input.CopyTo(output);
}
当您使用StreamWriter
时,您将数据解释为特定编码中的 text 数据 - 如果它不是文本,或者它不是那种编码,那么您将会最后以垃圾为主。
答案 1 :(得分:0)
这是二进制数据,它可以表示任何意义。不知道,它只是一系列字节,其中一个字节是一个8位数字。它可以表示作为字符(任意数量的编码),十六进制数字甚至打卡。
如果您想读/写二进制数据,那么FileStream就是您的朋友。 StreamReader / Writer是面向字符的。在过去只有ASCII编码的过去,字符曾经等同于字节,但现在情况不再如此。见http://www.joelonsoftware.com/articles/Unicode.html