Csharp-text-files
C#-テキストファイルの読み取りと書き込み
*StreamReader* および *StreamWriter* クラスは、テキストファイルの読み取りと書き込みに使用されます。 これらのクラスは、ファイルストリームへのバイトの読み取りと書き込みをサポートする抽象基本クラスStreamを継承します。
StreamReaderクラス
*StreamReader* クラスは、一連の文字を読み取るためのリーダーを表す抽象基本クラスTextReaderからも継承します。 次の表は、StreamReaderクラスで一般的に使用される*メソッド*の一部を示しています-
Sr.No. | Method & Description |
---|---|
1 |
public override void Close() StreamReaderオブジェクトと基になるストリームを閉じ、リーダーに関連付けられているシステムリソースを解放します。 |
2 |
public override int Peek() 次の使用可能な文字を返しますが、それを消費しません。 |
3 |
public override int Read() 入力ストリームから次の文字を読み取り、文字位置を1つ進めます。 |
例
次の例は、Jamaica.txtという名前のテキストファイルの読み取りを示しています。 ファイルの読み取り-
Down the way where the nights are gay
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
try {
//Create an instance of StreamReader to read from a file.
//The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("c:/jamaica.txt")) {
string line;
//Read and display lines from the file until
//the end of the file is reached.
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
} catch (Exception e) {
//Let the user know what went wrong.
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
プログラムをコンパイルして実行したときに表示されるものを推測してください!
StreamWriterクラス
*StreamWriter* クラスは、一連の文字を書き込むことができるライターを表す抽象クラスTextWriterを継承します。
次の表は、このクラスの最も一般的に使用されるメソッドを説明しています-
Sr.No. | Method & Description |
---|---|
1 |
public override void Close() 現在のStreamWriterオブジェクトと基になるストリームを閉じます。 |
2 |
public override void Flush() 現在のライターのすべてのバッファをクリアし、バッファされたデータを基になるストリームに書き込みます。 |
3 |
public virtual void Write(bool value) ブール値のテキスト表現をテキスト文字列またはストリームに書き込みます。 (TextWriterから継承されます。) |
4 |
public override void Write(char value) 文字をストリームに書き込みます。 |
5 |
public virtual void Write(decimal value) 10進数値のテキスト表現をテキスト文字列またはストリームに書き込みます。 |
6 |
public virtual void Write(double value) 8バイトの浮動小数点値のテキスト表現をテキスト文字列またはストリームに書き込みます。 |
7 |
public virtual void Write(int value) 4バイトの符号付き整数のテキスト表現をテキスト文字列またはストリームに書き込みます。 |
8 |
public override void Write(string value) 文字列をストリームに書き込みます。 |
9 |
public virtual void WriteLine() 行終端文字をテキスト文字列またはストリームに書き込みます。 |
メソッドの完全なリストについては、MicrosoftのC#ドキュメントをご覧ください。
例
次の例は、StreamWriterクラスを使用してファイルにテキストデータを書き込む方法を示しています-
using System;
using System.IO;
namespace FileApplication {
class Program {
static void Main(string[] args) {
string[] names = new string[] {"Zara Ali", "Nuha Ali"};
using (StreamWriter sw = new StreamWriter("names.txt")) {
foreach (string s in names) {
sw.WriteLine(s);
}
}
//Read and show each line from the file.
string line = "";
using (StreamReader sr = new StreamReader("names.txt")) {
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
}
Console.ReadKey();
}
}
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Zara Ali
Nuha Ali