LoginSignup
53
63

More than 1 year has passed since last update.

C#で簡単にファイル入出力

Last updated at Posted at 2018-07-11

1行でファイル入出力をする方法を紹介します。
この方法を使うと、ファイルをクローズしたかなど面倒なことを考える必要はありません。(.NET Framework 2.0 以降で使用することができます。)

1.ファイル出力

1.1ファイル上書き

ファイルを新規作成(上書き)して、文字列をファイル出力をするためには、File.WriteAllTextメソッドを使用します。ファイルを上書きするため、複数回実行すると以前に出力された結果が消えます。前の結果も残したいという場合は、次の「ファイル追記」を参考にしてください。

Overwrite.cs
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引数のファイル名のクォーテーションの前には@をつけます。
これはエスケープシーケンスを打ち消すために使用します。

エスケープシーケンスとは、画面上に文字を出力する際に、文字そのものを出力するのではなく、文字色の変更やカーソルの移動、文字の消去など、文字出力の制御を行う特殊な文字列のことである。

(https://www.weblio.jp/content/%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9)

1.2ファイル追記

すでに存在しているファイルに追記するためには、AppendAllTextメソッドを使用します。(ファイルが存在していない場合は、ファイルが新しく作成されます。例外は発生しません。)

Append.cs
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を使用します。
改行を追加した修正コードを以下に記載します。

Append_Mod.cs
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メソッドを使用します。

Read.cs
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処理前に確認しておくと良いでしょう。

Tips.cs
 if (!File.Exists(path))
{
//ここにファイルIO処理を記述する
}
53
63
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
63