1

bianryreaderを使用して、バイナリファイルの内容を読み取り、バイナリデータをdouble配列に変換しています。

バイナリファイルの内容

Header
Axis values
Points values

Axis値が書き込まれた後、新しい行に書き込まれるポイント値。新しい行を作成する方法のサンプルを書いているだけです

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

パーツの書き込みは正常に機能します。

読書部分:

ポイント値を読みたいので、ファイルポインタを2桁移動して、改行文字をスキップします。しかし、私が見ているのは、ASCII値が「2,13,10」の3文字です。

  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();
}

Aは、非常に特定のバイナリルールのセットに従うために、でBinaryWriter使用することのみを目的としています。BinaryReaderほとんどの場合、バイナリを使用する場合でも、rawのStream方が用途が広いです。しかし、を介してテキストファイルを書き込むことBinaryWriterは...まあ、不可能ではありません(Encoding自分で行うこともできます)-しかし、それはそれが設計されたものではありません。

于 2012-11-21T13:59:49.770 に答える