「.Netでのクラスストリームとその派生物」のトピックのコントロールに拍車をかける

すでにペダリングが得意だったときでも、継承階層と.NetのStream、StreamWriter、HttpWriterなどのクラスの使用方法を思い出せませんでした。 私はこれを簡単な方法で決めました-私はそれらをすべて(基本)書き、それぞれについていくつかの言葉を書きました。

トピックに精通している人にとっては、新しいものはここにありません。





ここに主なクラスがあります:



ストリーム

-要約

バイトシーケンスの汎用表現を提供します。



メモリストリーム



バックアップストレージがメモリであるスレッドを作成します。

そして読み取りと書き込み。

バイト[]を処理するこのような手段。



コードの一部:



バイト[]バッファ=新しいバイト[] {11,12,13,14,15,16,17,18,19,20};

バイト[] buffer2 =新しいバイト[] {21,22,23};



MemoryStream memStream =新しいMemoryStream(バッファ);

memStream.WriteByte(66);

memStream.WriteByte(77);



int adsfs = memStream.ReadByte();

int adsfs2 = memStream.ReadByte();



memStream.Position = 5;

memStream.Write(buffer2、0、2);



memStream.Seek(2、SeekOrigin.Current);



興味深いことに、読み取りと書き込みの両方が、書き込み/読み取りバイト数だけストリーム内の位置を等しく移動します。



ファイルストリーム



すべて同じ、ファイルからの書き込み/読み取り

コードの一部:



FileStream fileStream = new FileStream( "file33.txt"、FileMode.Open);

バイト[] buffer2 =新しいバイト[] {71、72、73};



var b1 = fileStream.ReadByte();

var b2 = fileStream.ReadByte();

var b3 = fileStream.ReadByte();



fileStream.WriteByte((byte)b3);

fileStream.WriteByte((byte)b3);



//およびすべてのプロパティ

var b = fileStream.CanRead;

b = fileStream.CanWrite;

b = fileStream.CanSeek;



fileStream.Position = 106;

fileStream.Write(buffer2、0、3);



fileStream.Seek(1、SeekOrigin.End);

fileStream.WriteByte(76);

fileStream.WriteByte(76);

fileStream.WriteByte(76);

fileStream.WriteByte(76);



ReadByte()は、読み取りが失敗したとき(-1)を理解するためにintを返します。



テキストリーダー

-要約

Streamではなく、バイトではなく文字(読み取り専用)を読み取ることができるアドオン。

連続した文字セットを読み取るリーダーを表します。



ストリームリーダー



コードの一部:



バイト[]バッファ=新しいバイト[] {71,72,73,74,75,76,77,78,79,80、80,80,80};



バイト[] buffer2 =新しいバイト[] {81,82,83};



MemoryStream memStream =新しいMemoryStream(バッファ);

使用(StreamReader strReader = new StreamReader(memStream))

{

var sd = strReader.Peek();

var sdd = strReader.Peek();

var sded = strReader.Peek();



var dasd = strReader.Read();

文字列s =((char)dasd).ToString();



var das2d = strReader.Read();

var das3d = strReader.Read();



strReader.BaseStream.Position = 8;



var vsd = strReader.ReadToEnd();

}



データがバッファリングされるため、Positionがジャンプすることを除き、すべてが簡単になりました。



StringReader



コードの一部:



string s = "SDAFASDF AF dfsdfsd fas";

StringReader stringReader = new StringReader(s);

var sdf = stringReader.Read();

var sddf = stringReader.Read();

var sddasdf = stringReader.Read();

var sdsssf = stringReader.Read();

var sdfaa = stringReader.Read();

var sdfg = stringReader.ReadLine();



テキストライター

-要約

連続した文字セットを記録するレコーダーを表します。



ストリームライター



ストリームに書き込むためのストリームアドイン。 抽象TextWriterから派生



コードの一部:



FileStream fileStream = new FileStream( "file33.txt"、FileMode.Open);

fileStream.Seek(1、SeekOrigin.End);



StreamWriter strWriter = new StreamWriter(fileStream);



strWriter.Write( "sad");

strWriter.WriteLine( "sad");

strWriter.Write( "sad");

strWriter.Close();



ストリームの位置は記録時に変更されません。

コードの一部:



バイト[]バッファ=新しいバイト[] {71、72、73、74、75、76、77、78、79、80、80、80、80}。



MemoryStream memStream =新しいMemoryStream(バッファ);



StreamWriter strWriter = new StreamWriter(memStream);



strWriter.Write( "sad");

// strWriter.Write( "sasfagfsdghs h dfhdh d hd ddf d");



strWriter.Close();



Xmlreader



別のアドオン。 これで、TextReaderの上に。 文字列、ストリーム、およびテキストリーダーとして初期化できます。

コードの一部:



FileStream fileStream = new FileStream( "file1.txt"、FileMode.Open);



XmlReader reader = XmlReader.Create(fileStream);



StringBuilder output = new StringBuilder();

XmlWriter writer = XmlWriter.Create(出力);



//ファイルを解析し、各ノードを表示します。

while(reader.Read())

{

スイッチ(reader.NodeType)

{

case XmlNodeType.Element:

writer.WriteStartElement(reader.Name);

休憩;

case XmlNodeType.Text:

writer.WriteString(reader.Value);

休憩;

case XmlNodeType.XmlDeclaration:

case XmlNodeType.ProcessingInstruction:

writer.WriteProcessingInstruction(reader.Name、reader.Value);

休憩;

case XmlNodeType.Comment:

writer.WriteComment(reader.Value);

休憩;

case XmlNodeType.EndElement:

writer.WriteFullEndElement();

休憩;

}



}



writer.Close();



かなり奇妙な(しかし最速のように見える)xmlを読み取ります。 つまり、XdocumentまたはXMLDocumentの方がはるかに便利ですが、実際には、これらのクラスはこの構造の追加アドオンです。



Xmlwriter



XMLデータへの高速でキャッシュされないフォワード専用アクセスを提供するリーダーを表します。

このタイプのメソッドを備えたTextWriter(StreamWriter)のアドオン:

コードの一部:



使用(XmlWriter writer = XmlWriter.Create(xmlFile、settings))

{

writer.WriteStartDocument(false);

writer.WriteComment( "これはコメントです。");

writer.WriteStartElement( "books");

writer.WriteStartElement( "book");

writer.WriteElementString( "id"、 "1");

writer.WriteElementString( "name"、 "Apple Training Series:GarageBand 09");

writer.WriteElementString( "author"、 "Mary Plummer");

writer.WriteElementString( "price"、 "$ 39.99");

writer.WriteEndElement();

writer.WriteEndElement();

writer.Flush();

}

}



All Articles