fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

Streamの基本

FileStream...1byte単位や、複数byte単位での読み書きが可能。

TextReader...


StreamReader/StreamWriter
...byteデータを扱うストリーム・オブジェクトをラップするクラスで、
ストリームの種類(ファイル・ストリームか、ネットワーク・ストリームかなど)
にかかわらず文字単位の読み書きを行うRead/Writeメソッドや、
行単位の読み書きを行うReadLine/WriteLineメソッドが提供される。

// デシリアライズに渡すためのMemoryStreamを用意
using (System.IO.MemoryStream memory_stream = new System.IO.MemoryStream())
{
	// MemoryStreamに書くためのStreamWriter を用意
	using (System.IO.StreamWriter stream_writer = new System.IO.StreamWriter(memory_stream))
	{
		// 1行データをStreamWriterのバッファに書く
		stream_writer.WriteLine(log);
		
		// StreamWriterのバッファからMemoryStreamに書く
		stream_writer.Flush();
		// MemoryStreamの位置を先頭に移動
		memory_stream.Seek(0, System.IO.SeekOrigin.Begin);
		
		// XmlSerializerオブジェクトを作成
		// DataConfig型のXMLシリアライザを用意
		System.Xml.Serialization.XmlSerializer serializer =
			new System.Xml.Serialization.XmlSerializer(typeof(DataConfig));
		
		// XMLファイルから読み込み、逆シリアル化する
		// DataConfigクラスでデシリアライズ
		ConfigData = (DataConfig)serializer.Deserialize(memory_stream);
	}
}