C#/VBには、テキストファイルの読み書きを行うための標準的なクラスが用意されています。ここでは、テキストファイルの読み書き方法を解説します。
テキストファイルの読み書きをするにはどうしたらいいですか?
読み書きするにはファイルを開く、読み書きする、閉じる処理を行います。いくつか手法があるので、3つのコーディング方法を紹介します。
テキストファイルの読み書きを行うには?
テキストファイルの読み書きをにはファイルストリームという機能を使って
- ファイルを開く
- 読み込み・書き込み
- ファイルを閉じる
上記、3ステップの操作を順に行います。
また、ファイルにテキストを書き込む際に、既存ファイルに上書き保存か、追記か選択して使用することができます。状況に応じて使い分けてください。
読み取り用にテキストファイルを開く方法
テキストファイルの読み込みを行う方法を3つ紹介します。
①FileクラスのOpenReadメソッドを利用することでテキストファイルを読み取り専用で開くことができます。
System.IO.File.OpenRead(ファイルパス)
②OpenTextメソッドではUTF-8形式のテキストファイルを読み取り専用で開くことができます。
System.IO.File.OpenText(ファイルパス)
③StreamReaderクラスでは、ファイルパスとエンコードを指定することで、StreamReaderオブジェクトを生成できます。第二引数に読み込む際の文字エンコーディングを指定することができます。指定しない場合は、デフォルトが指定されます。
※エンコーディングの種類に関してはMSDNの解説を参照。
New System.IO.StreamReader(ファイルパス)
New System.IO.StreamReader(ファイルパス, Encoding)
最後に、ファイルを閉じるには、それぞれのCloseメソッドを使用する必要があります。
以下は、StreamReaderを使った際のサンプルです。
string strPath = @"C:\debug1\test.txt";
var ws = new System.IO.StreamReader(strPath);
Debug.WriteLine(ws.ReadToEnd());
ws.Close();
Dim strPath As String = "C:\debug1\test.txt"
Dim ws = New System.IO.StreamReader(strPath)
Debug.WriteLine(ws.ReadToEnd())
ws.Close()
上記のサンプルプログラムは、 “C:\debug1\test.txt” というファイルを読み取り、その内容を表示するものです。
文字列変数 strPath にファイルのパスを格納し、System.IO.StreamReader クラスの新しいインスタンスを作成し、strPath で指定されたファイルを開きます。
ws.ReadToEnd() メソッドを使用して、ファイルの内容を読み取り、それを Debug.WriteLine() メソッドに渡して表示します。最後に、ws.Close() メソッドを使用して、ファイルを閉じます。
テキストファイルを書き込み用に開く
テキストファイルを書き込み用に開く方法を3つ紹介します。
①FileクラスのOpenWriteメソッドを利用することでテキストファイルを書き込み専用で開きます。
System.IO.File.OpenWrite(ファイルパス)
②AppendTextメソッドは、UTF-8形式のテキストファイルを書き込み専用で開きます。(ファイルが存在しない場合は作成します)
System.IO.File.AppendText(ファイルパス)
③StreamWriterクラスでは、第一引数にファイルパス、第二引数にデータを追加する場合「true」/上書きする場合「false」、第三引数にエンコードを指定します。指定しない場合はデフォルトが指定されます。
※エンコーディングの種類に関してはMSDNの解説を参照。
New System.IO.StreamWriter(ファイルパス, true/false)
New System.IO.StreamWriter(ファイルパス, true/false , Encoding)
ファイルを閉じるにはそれぞれのCloseメソッドを利用します。
以下は、StreamWriterを使ってファイルに追記する場合のサンプルです。
string strPath = @"C:\debug1\test.txt";
//ファイルに追記(第二引数:true)する
var ws = new System.IO.StreamWriter(strPath,true);
ws.WriteLine("1行目追記");
ws.WriteLine("2行目追記");
ws.Close();
Dim strPath As String = "C:\debug1\test.txt"
'ファイルに追記(第二引数:true)する
Dim ws = New System.IO.StreamWriter(strPath, True)
ws.WriteLine("1行目追記")
ws.WriteLine("2行目追記")
ws.Close()
上記のサンプルプログラムは、 “C:\debug1\test.txt” というファイルに文字列を追記するものです。
文字列変数 strPath にファイルのパスを格納しています。System.IO.StreamWriter クラスの新しいインスタンスを作成し、strPath で指定されたファイルを開きます。第二引数に true を指定しているため、ファイルに追記モードで開きます。
ws.WriteLineでファイルに追記します。最後にws.Close() メソッドを使用して、ファイルを閉じます。
StreamReader/StreamWriterのパス意外の引数は、既定の値で良い場合は省略することが可能です。
usingを使って記述を簡略化する
ファイルストリームを利用する場合、usingを使用することで、インスタンスの作成とクローズの記述を省略することができます。以下は、Usingを利用した場合の記述例です。
// OpenWriteで記述した場合の例
using (var file = System.IO.File.OpenWrite(filePath))
{
// ファイルに書き込み
}
' OpenWriteで記述した場合の例
Using file = System.IO.File.OpenWrite(filePath)
' ファイルに書き込み
End Using
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
この記事のまとめ
テキストファイルをファイルストリームを使用して読み書きする方法を解説しました。
- テキストファイルを読み取るには、FileクラスのOpenReadメソッド、OpenTextメソッド、StreamReaderクラスを利用する。
- テキストファイルを書き込むには、FileクラスのOpenWriteメソッド、AppendTextメソッド、StreamWriterクラスを利用する。
- 開いたファイルは必ずCloseメソッドで閉じる必要がある。
テキストファイルを読み書きすることができました!
3つの方法を必要に応じて使い分けることが重要ですね。
注意点としては、開いたファイルは必ずCloseメソッドで閉じるようにしましょう。
ファイルを閉じないと、他のプログラムからアクセスできなくなるだけでなく、ファイルが破損する可能性もあります。
コメント