📚

C#でテキストファイル読み書き

2022/10/23に公開約1,900字

C#でテキストファイル読み書き

C#でのテキストファイル読み書き方法をまとめます。

読み書きに伴う処理

ファイル操作は
ファイルを開く ⇒ 読み/書き ⇒ ファイルを閉じる
という流れになります。
開いたファイルは忘れずに閉じるようにしましょう。
ファイルを閉じ忘れた場合、他の処理からアクセスできなくなるなど不都合が生じる可能性があります。
Closeメソッドを使用して閉じることも可能ですが、try~catch~finallyの実装が必要であったり、Close忘れの可能性があるためusingを使用するようにした方が間違いないと思います。
usingを使用すると、usingの範囲から出るときに自動でリソースが破棄されます。

using (StreamReader sr = new StreamReader("Text.txt"))
{   // このカッコの中でのみファイルを開いている
    string str;
    str = sr.ReadLine();
}   // カッコから出るとファイルは閉じられる

ファイル読み込み

テキストファイルの読み込みにはStreamReaderクラスを使用します。

StreamReader(string file)
file : 読み込むファイル

指定したファイルが存在しない場合、例外が発生します。
事前にファイルが存在することを確認しましょう。

1行読み込み

ファイルの内容を1行分読み込むにはReadLineメソッドを使用します。

string ReadLine()
return : 読み込んだ1行分の文字列
         末尾に到達した場合はnullを返す

戻り値の文字列には改行コードは含まれていません。
実行すると読み取り位置が1行分進むため、繰り返しコールすることで1行ずつファイルを読むことができます。

using (StreamReader sr = new StreamReader("Text.txt"))
{
    string line;
    while((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

末尾まですべて読み込み

現在の読み取り位置から末尾まですべて読み込むにはReadToEndメソッドを使用します。

string ReadToEnd()
return : 現在の読み取り位置から末尾までの文字列
         現在の読み取り位置が末尾の場合は空文字列を返す

読み取った文字列がメモリに収まりきらない場合は例外が発生します。

using (StreamReader sr = new StreamReader("Text.txt"))
{
    string lines;
    lines = sr.ReadToEnd();
    Console.Write(lines);
}

ファイル書き込み

テキストファイルの書き込みにはStreamWriterクラスを使用します。

StreamWriter(string file, bool append)
file   : 書き込むファイル
append : true 追記
         false 上書き

指定したファイルが存在しない場合は新規作成されます。

文字列書き込み

ファイルに文字列を書き込むにはWriteメソッドを使用します。

void Write(string str)
str : 書き込む文字列
using (StreamWriter sw = new StreamWriter("Text.txt", true))
{
    string str = "write test";
    sw.Write(str);
}

WriteLineメソッドを使用すると文字列の末尾に改行文字が追加されます。

void WriteLine(string str)
str : 書き込む文字列
using (StreamWriter sw = new StreamWriter("Text.txt", true))
{
    string str = "write test";
    sw.WriteLine(str);
}

Discussion

ログインするとコメントできます