如何使用binarywriter编写新的行字符

时间:2012-11-21 13:47:28

标签: c#

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

二进制文件的内容

Header
Axis values
Points values

写入Axis值后,要在新行中写入的点值。 我只是在写一个示例如何创建一个新行

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”)。
  3. 代码:

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

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