C#のテキストファイルの書き込みと読み込みのサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)
目次
サンプル | StreamReaderクラスで読み込む |
StreamWriterクラスで書き込む |
StreamReaderクラスで読み込む
Public Sub New (path As String, encoding As Encoding) |
- ファイルの文字を読み込みます。
- 上記は、StreamReaderクラスのコンストラクタです。1つめの引数はpathで、2つめの引数はエンコーディングです。2つめの引数を省略するとUTF-8になります。
- 以下は、MicrosoftのStreamReaderクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamreader?view=netcore-3.1
ファイルを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行になります。
赤
黄
青
関連の記事