写入.bin二进制文件

本文关键字:二进制文件 bin 写入 | 更新日期: 2023-09-27 18:13:49

我试图将整数写入二进制文件,但它一直在二进制文件中给出奇怪的字符。例如,我试着写2000,但在文件中我会得到一些奇怪的东西。我怎么修理它?找不到解决方法

我使用以下代码:

 //create the file
        FileStream fs = new FileStream("iram.bin", FileMode.Create);
        // Create the writer for data.
        BinaryWriter w = new BinaryWriter(fs);
w.Write((int) 2000);
w.Close();
fs.Close();

写入.bin二进制文件

我认为问题是你没有正确地读取数据。

您需要使用BinaryReader像这样读取数据…

    using (FileStream fs2 = new FileStream("iram.bin", FileMode.Open))
    {
        using(BinaryReader r = new BinaryReader(fs2))
        {
            var integerValue = r.ReadInt32();
        }
    }

当然,除非你真的想把文本写入文件,在这种情况下,你可能不希望BinaryWriter把数据写出来。

如果你真的想写出文本数据,你可以这样做…(请确保将编码设置为您需要的编码)

    using (var tw = new StreamWriter("iram.txt", true, Encoding.ASCII))
    {
        tw.WriteLine(2000);
    }

编辑:正如Jesse提到的,你通常想用using块来包装一次性对象。

你在文件中得到意外字符的原因是你写到文件中的内容一开始就不打算被解释为字符序列

当你在记事本或其他文本编辑器中打开它时,它只会取那里的东西,猜测编码(或使用默认值),并显示数据将编码的任何字符,如果它是编码字符。这不是为了让人读懂。


具有字符序列2000的人类可读文本文件实际上具有字符2的编码,后跟0的编码3次。

在Unicode中是U+0032U+0030U+0030U+0030