1行でファイル入出力をする方法を紹介します。
この方法を使うと、ファイルをクローズしたかなど面倒なことを考える必要はありません。(.NET Framework 2.0 以降で使用することができます。)
1.ファイル出力
1.1ファイル上書き
ファイルを新規作成(上書き)して、文字列をファイル出力をするためには、File.WriteAllTextメソッドを使用します。ファイルを上書きするため、複数回実行すると以前に出力された結果が消えます。前の結果も残したいという場合は、次の「ファイル追記」を参考にしてください。
using System;
using System.IO;
namespace TestFileIO
{
class Program
{
static void Main(string[] args)
{
//第1引数:ファイルパス
//第2引数:追記するテキスト
File.WriteAllText(@"C:\Myfolder\test.txt", "Good morning!");
}
}
}
補足
第1引数のファイル名のクォーテーションの前には@をつけます。
これはエスケープシーケンスを打ち消すために使用します。
エスケープシーケンスとは、画面上に文字を出力する際に、文字そのものを出力するのではなく、文字色の変更やカーソルの移動、文字の消去など、文字出力の制御を行う特殊な文字列のことである。
1.2ファイル追記
すでに存在しているファイルに追記するためには、AppendAllTextメソッドを使用します。(ファイルが存在していない場合は、ファイルが新しく作成されます。例外は発生しません。)
using System;
using System.IO;
namespace TestFileIO
{
class Program
{
static void Main(string[] args)
{
//第1引数:ファイルパス
//第2引数:追記するテキスト
File.AppendAllText(@"C:\Myfolder\test.txt", "Good morning!");
}
}
}
Append.csを複数回実行すると、テキストファイルには以下のように記述されます。
「Good morning!Good morning!Good morning!Good morning!Good morning!Good morning!」
読みにくい。。。。
そのため、改行しましょう。改行にはEnvironment.NewLineを使用します。
改行を追加した修正コードを以下に記載します。
using System;
using System.IO;
namespace TestFileIO
{
class Program
{
static void Main(string[] args)
{
//第1引数:ファイルパス
//第2引数:追記するテキスト
File.AppendAllText(@"C:\Myfolder\test.txt", "Good morning!"+Environment.NewLine);
}
}
}
2.ファイル入力
出力したテキストファイルから、文字列を読み込むためには、File.ReadAllTextメソッドを使用します。
using System;
using System.IO;
namespace TestFileIO
{
class Program
{
static void Main(string[] args)
{
//第1引数:ファイルパス
string readText = File.ReadAllText(@"C:\Myfolder\test.txt");
Console.WriteLine(readText);
}
}
}
3.Tips
ファイルパスに存在しないフォルダパスが含まれると'System.IO.DirectoryNotFoundException'例外が発生します。対策として下記のようにファイルパスが正しいか、ファイルIO処理前に確認しておくと良いでしょう。
if (!File.Exists(path))
{
//ここにファイルIO処理を記述する
}