我正在使用一个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”。
代码:
BinaryReader abinRead = new BinaryReader(new FileStream("c:\\newline.txt",FileMode.OpenOrCreate));
while (abinRead.PeekChar() != -1)
{
char aChar = abinRead.ReadChar();
Console.WriteLine(aChar);
}
abinRead.Close();
答案 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
等) - 但它不是它的设计目的