とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

【C#】StreamWriterの注意点

System.IO.StreamWriterの使い方


System.IO.StreamWriterのWriteメソッドは引数に文字列を取って
指定したファイルに文字列の書き込みができる。

書き込みの途中で、指定したファイルはオープンしたままで(同じStreamで)
バイナリデータの書き込みを行いたい時は(書き込み方法を文字列→binaryに変更したい)
System.IO.StreamWriterのBaseStreamプロパティを参照し、
BaseStream.WriteByteメソッドにバイナリデータをそのまま指定すれば
そのStreamにアクセスしつつ記載が可能。

注意点としてはBaseStream.WriteByteメソッド呼び出し前に
Streamのpositionを適切に移動してあげないと意図した通りにデータの書き込みができない。



こんな感じ。

例えば、最後に終端記号(1AのEOF)を書きたい時は
一旦Flushメソッドの呼び出しが必要です。

abcde(1A)
これが意図している結果。

Flushメソッドの呼び出しがない場合は、
(1A)bcde
こうなる。

Flushメソッドを呼び出さなくてもpositionプロパティに直接数値をいれてやっても大丈夫。
バイナリデータの書き込みとか、
ストリームを意識して読み書きしたいときは、ポジションは適切に管理しないとダメだねということです。

テーマ:プログラミング - ジャンル:コンピュータ

FC2Ad