1

我正在使用 bianryreader 读取二进制文件的内容并将二进制数据转换为双精度数组。

二进制文件的内容

Header
Axis values
Points values

轴值写入后,点值将写入新行。我只是在写一个示例我如何创建一个新行

BinaryWriter aBinaryWriter = new BinaryWriter(new FileStream("c:\\newline.txt",FileMode.OpenOrCreate));
aBinaryWriter.Write("\r\n");
aBinaryWriter.Close();

写作部分工作正常。

阅读部分:

我想读取点值,所以我将文件指针移动 2 个位置原因以跳过换行符。但我看到的是 3 个字符的 ascii 值“2,13,10”。

  1. 有 3 个 ascii 值的原因是什么?
  2. 如何在二进制文件中引入换行符(“\r\n”)。

代码:

BinaryReader abinRead = new BinaryReader(new FileStream("c:\\newline.txt",FileMode.OpenOrCreate));
while (abinRead.PeekChar() != -1)
{
    char aChar = abinRead.ReadChar();
    Console.WriteLine(aChar);
 }
 abinRead.Close();
4

2 回答 2

3

BinaryWriter.Write()写入一个以长度为前缀的字符串。
第一个字节是字符串的长度。

于 2012-11-21T13:50:59.523 回答
2

这里的错误是使用BinaryWriter. 如果您正在编写文本文件,请使用TextWriter,例如StreamWriter

using (var writer = new StreamWriter("foo.txt"))
{
    writer.Write(someString);
    writer.Write(someDouble);
    writer.WriteLine();
}

ABinaryWriter仅适用于BinaryReader, 用于遵循一组非常具体的二进制规则。在大多数情况下,即使使用二进制文件,原始文件Stream也更加通用。但是通过编写文本文件BinaryWriter是......好吧,并非不可能(你可以Encoding自己做等) - 但这不是它的设计目的。

于 2012-11-21T13:59:49.770 回答