C# テキストファイルの読み書きのサンプル

C#のテキストファイルの書き込みと読み込みのサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)

目次

サンプル StreamReaderクラスで読み込む
  StreamWriterクラスで書き込む

StreamReaderクラスで読み込む

Public Sub New (path As String, encoding As Encoding)

ファイルを1行ずつ読み込むサンプルです。

using System;
using System.IO;

class Test1
{
	static void Main()
	{
		var path = @"d:\test1\test1.txt";

		try
		{
			using (StreamReader reader = new StreamReader(path,
				System.Text.Encoding.GetEncoding("shift_jis")))
			{
				var line = "";
				while ((line = reader.ReadLine()) != null) //1行読み込み
				{
					Console.WriteLine("line=" + line); //1行出力
				}
				//line = reader.ReadToEnd(); //すべて読み込む
				//Console.WriteLine("line=" + line); //全行出力
			}
		}
		catch (Exception e)
		{
			Console.WriteLine(e.Message);
		}
	}
}

8行目の@は、パスの指定時にエスケープ文字を入れなくてすむようになります。可読性があがります。

12行目のusingステートメントでファイルを閉じるDisposeメソッドを自動で実行してくれます。
try-catch-finallyのfinallyでファイルを閉じる意味になります。

13行目のStreamReaderの2つめの引数でshift_jisを指定しています。2つめの引数を省略するとUTF-8になります。

16行目のReadLineメソッドは、1行ずつ読み込みます。
20行目のReadToEndメソッドは、すべての行を改行も入った状態で読み込みます。

24-27行目は、例外が起きたときに実行されます。
ファイルが存在しない場合は、ファイル 'd:\test1\test1.txt' が見つかりませんでした。等表示されます。

StreamWriterクラスで書き込む

Public Sub New (path As String, append As Boolean, encoding As Encoding)
  • ファイルに文字を書き込みます。
  • 上記は、StreamReaderクラスのコンストラクタです。1つめの引数はpathで、2つめの引数はtrueが追記でfalseが新規書き込み、3つめの引数はエンコーディングです。省略するとUTF-8になります。
  • 以下は、MicrosoftのStreamWriterクラスのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamwriter?view=netcore-3.1

文字列をファイルに書き込むサンプル

改行する場合は\nを使用します。

using System;
using System.IO;

class Test1
{
	static void Main()
	{
		var path = @"d:\test1\test1.txt";

		try
		{
			using (StreamWriter writer = new StreamWriter(path, false,
				System.Text.Encoding.GetEncoding("shift_jis")))
			{
				writer.WriteLine("あいうえお\nかきくけこ\nさしすせそ");
			}
		}
		catch (Exception e)
		{
			Console.WriteLine(e.Message);
		}
	}
}

8行目の@は、パスの指定時にエスケープ文字を入れなくてすむようになります。可読性があがります。

12行目のusingステートメントでファイルを閉じるDisposeメソッドを自動で実行してくれます。
try-catch-finallyのfinallyでファイルを閉じる意味になります。

12行目のStreamWriterの2つめの引数がfalseの場合、新規で書き込みます。
trueの場合、追記になります。

13行目のStreamWriterの3つめの引数でshift_jisを指定しています。3つめの引数を省略するとUTF-8になります。

15行目の\nは改行です。

18-21行目は、例外が起きたときに実行されます。
ファイルが存在しない場合は、ファイルが新規作成されるので例外になりません。

 

リストの値をファイルに書き込むサンプル

using System;
using System.IO;
using System.Collections.Generic;
class Test1
{
	static void Main()
	{
		var path = @"d:\test1\test1.txt";
		var a = new List<string>() { "赤", "黄", "青" };
		try
		{
			using (StreamWriter writer = new StreamWriter(path, false,
				System.Text.Encoding.GetEncoding("shift_jis")))
			{
				foreach (var b in a)
				{
					writer.WriteLine(b);// 赤 黄 青
				}
			}
		}
		catch (Exception e)
		{
			Console.WriteLine(e.Message);
		}
	}
}

9行目は、リストです。

書き込み結果は以下のように3行になります。

赤
黄
青

関連の記事

C# if文 条件分岐を行うサンプル
C# switch文のサンプル

△上に戻る