C# ファイルの読み書き(StreamReader/StreamWriter)

   

C#では、いろいろな「ファイル」を扱いますが、今回は一番よく使われる「テキストファイル」の読み書きについて書きます。
ファイルアクセスのためのクラスは、C#では「System.IO名前空間」のクラスで行うことができます。

 

ファイルへのアクセスの基本

C言語などでは、

  1. ファイルを開く
  2. データを(読み込む/書き込む)
  3. ファイルを閉じる

の順で処理を行います。
C#でも基本は同じですが、「1.ファイルを開く」と「3. ファイルを閉じる」は、C言語ほどはっきり見えません。
ですが、C#の場合、逆にこの部分は「フレームワークがやってくれている」と思っていい部分でもあります。

 

ファイルからテキストを読み取る

ファイルからテキストを読み取るには「System.IO.StreamReader」で行います。

下記がサンプルです。

 

このサンプルでは、”test.txt”というテキストファイルのデータを読み取るのですが、気を付けていただきたいのは「日本語」でデータを作るときの文字コードは「UTF-8」で作るようにしてください。
テキストファイルの日本語が「UTF-8」でないと表示で文字化けしてしまいます。

 

ファイルへテキストデータを書き込む

ファイルからテキストデータを書き込むには「System.IO.StreamReader」で行います。

下記がサンプルです。

 

このサンプルでテキストデータを出力すると、テキストデータは「UTF-8」で出力されます。

ここで重要なのは、ファイルの読み書きには「文字コード」の指定があり、現在のC#で取り扱う標準の文字コードは「UTF-8」で、C#のソースコードも文字コードは「UTF-8」です。

 

ファイルはいつ開いていつ閉じている?

上記のサンプルコードで「ファイルはいつ開いていつ閉じているのか」という疑問があると思います。
このサンプルコードの場合は、はっきりしています。
行でいうと using( … ) { の行でファイルを開き、この using のブロックが閉じるところで、ファイルを閉じています。
StreamReaderやStreamWriterから言うと、オブジェクトを生成したときにファイルを開き、オブジェクトを破棄するときにファイルを閉じています。

 

 - 未分類