解释和读取c#中的任何文件类型

时间:2013-11-14 14:52:42

标签: c#

我在Notepad ++中打开了一个文件,它看起来像附加的图像。这些符号代表什么? HEX / ASCII /二进制?我想阅读并写一个单独的文件。我使用StreamReader和StreamWriter并按字符读取字符,但结果文件的符号与输入文件不同。

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

2 个答案:

答案 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