C#でファイル操作をする方法|読み込み・書き込みの基本

先生

C#でファイル操作をマスターして、データの読み書きを自由自在に!

C#でのファイル操作:基本をマスター

C#は、ファイル操作を行うための豊富な機能を提供しています。この記事では、C#でファイルを読み込み、書き込むための基本的な方法をわかりやすく解説します。初心者の方でも、この記事を読めばC#でのファイル操作の基礎を習得できます。

ファイル操作は、データの永続化や設定ファイルの読み込みなど、さまざまなアプリケーションで不可欠な処理です。C#のSystem.IO名前空間には、ファイルやディレクトリを操作するためのクラスが多数含まれています。

この記事では、StreamReaderStreamWriterFileクラスなどを中心に、具体的なコード例を交えながら、ファイル操作の基本を解説していきます。

ファイルの読み込み:StreamReaderクラス

StreamReaderクラスは、テキストファイルを読み込むために使用されます。ファイルのパスを指定してインスタンスを作成し、ReadLine()メソッドで1行ずつ読み込むことができます。

using System; 
using System.IO;

public class FileReadExample
{
    public static void Main(string[] args)
    {
        try
        {
            // ファイルを開いてStreamReaderを作成
            using (StreamReader sr = new StreamReader("sample.txt"))
            {
                string line;
                // ファイルの最後まで1行ずつ読み込む
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e)
        {
            // エラーが発生した場合
            Console.WriteLine("ファイル読み込みエラー: " + e.Message);
        }
    }
}

上記の例では、sample.txtというファイルを読み込み、その内容をコンソールに出力しています。usingステートメントを使用することで、StreamReaderが確実に閉じられ、リソースが解放されます。

エラーハンドリングも重要です。try-catchブロックを使用することで、ファイルが存在しない場合やアクセス権がない場合などの例外を処理できます。

ファイルへの書き込み:StreamWriterクラス

StreamWriterクラスは、テキストファイルに書き込むために使用されます。StreamReaderと同様に、ファイルのパスを指定してインスタンスを作成し、WriteLine()メソッドで1行ずつ書き込むことができます。

using System; 
using System.IO;

public class FileWriteExample
{
    public static void Main(string[] args)
    {
        try
        {
            // ファイルを開いてStreamWriterを作成
            using (StreamWriter sw = new StreamWriter("output.txt"))
            {
                // ファイルに書き込む
                sw.WriteLine("Hello, World!");
                sw.WriteLine("This is a sample text.");
            }
            Console.WriteLine("ファイル書き込み完了");
        }
        catch (Exception e)
        {
            // エラーが発生した場合
            Console.WriteLine("ファイル書き込みエラー: " + e.Message);
        }
    }
}

上記の例では、output.txtというファイルを作成し、「Hello, World!」と「This is a sample text.」という2行を書き込んでいます。usingステートメントを使用することで、StreamWriterが確実に閉じられ、ファイルが正しく保存されます。

StreamWriterには、ファイルが存在しない場合に新規作成するだけでなく、既存のファイルに追加書き込みを行うためのオプションもあります。StreamWriterのコンストラクタにtrueを渡すと、ファイルは追記モードで開かれます。

Fileクラスを使った便利なメソッド

Fileクラスには、ファイルの存在確認、コピー、移動、削除など、さまざまな便利なメソッドが用意されています。

using System; 
using System.IO;

public class FileClassExample
{
    public static void Main(string[] args)
    {
        string filePath = "my_file.txt";

        // ファイルの存在確認
        if (File.Exists(filePath))
        {
            Console.WriteLine("ファイルが存在します。");

            // ファイルのコピー
            File.Copy(filePath, "my_file_copy.txt", true); // 上書きを許可
            Console.WriteLine("ファイルをコピーしました。");

            // ファイルの移動 (リネーム)
            File.Move(filePath, "new_file_name.txt");
            Console.WriteLine("ファイル名を変更しました。");


            // ファイルの削除
            File.Delete("new_file_name.txt");
            Console.WriteLine("ファイルを削除しました。");
        }
        else
        {
            Console.WriteLine("ファイルが存在しません。");
        }
    }
}

File.Exists()メソッドは、ファイルが存在するかどうかを確認します。

File.Copy()メソッドは、ファイルをコピーします。第3引数にtrueを指定すると、コピー先に同名のファイルが存在する場合に上書きされます。

File.Move()メソッドは、ファイルを移動します。移動先が別のディレクトリの場合、ファイルは移動されます。移動先が同じディレクトリの場合、ファイル名は変更されます。

File.Delete()メソッドは、ファイルを削除します。

参考リンク

まとめ

C#でのファイル操作は、StreamReaderStreamWriterFileクラスを使用することで簡単に行うことができます。これらのクラスを理解し、適切に使用することで、さまざまなアプリケーションでファイル操作を効率的に行うことができます。エラーハンドリングを忘れずに行い、安全なファイル操作を心がけましょう。