【C#入門】ファイルの使い方総まとめ(読み書き/存在チェックなど)

こんにちは!エンジニアの中沢です。

C#にはファイルを操作するための様々なメソッドが用意されています。

ファイルの読み書きや、存在チェック、コピーなどの様々なことができます。

この記事では、

・ファイルの操作とは
・テキストファイルを読み込む方法
・ファイルにテキストを書き込む方法

という基本的な内容から、

・ファイルパスからファイル名を取得する方法
・ファイルとフォルダの存在チェックをする方法
・ファイルを削除する方法
・ファイルをコピーする方法
・ファイルを検索する方法
・ファイルサイズを取得する方法

などの応用的な使い方に関しても解説していきます。

今回はこれらの方法を覚えるために、ファイルのさまざまな使い方をわかりやすく解説します!

ファイルの操作とは

C#では、ファイルを扱うためにいくつかのクラスが用意されています。

ファイルの読み書きするためのクラスには、ファイルを読み込むための「System.IO.StreamReader」や、ファイルに書き込むための「System.IO.StreamWriter」があります。

ファイルを操作するためのクラスには、「System.IO.File」があります。

ファイルの情報を扱うには、「System.IO.FileInfo」を使います。

この記事では、これらのファイルを扱うクラスの使い方をまとめて解説します。

サンプルプログラムに関しては、Cドライブ直下にSamuraiというフォルダをつくり、その中に以下のファイルがある想定で進めていきます。

  • samurai.txt
  • samurai.jpg
  • samurai.zip

テキストファイルを読み込む方法

1度にすべてのテキストファイルの内容を読み込むには、「StreamReaderクラス」の「ReadToEndメソッド」を使います。

StreamReaderクラスの使い方は、コンストラクタの第1引数に読み込むファイルのパスを指定して、第2引数に文字コードを指定します。

「ReadToEndメソッド」でファイルの読み込みが終わったら、「Closeメソッド」でファイルを閉じる必要があることも忘れないでください。

テキストファイルを読み込む方法を次のプログラムで確認してみましょう。

using System;
using System.IO;
using System.Text;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            StreamReader sr = new StreamReader(@"C:\Samurai\samurai.txt", Encoding.GetEncoding("Shift_JIS"));

            string str = sr.ReadToEnd();

            sr.Close();

            Console.WriteLine(str);

            Console.ReadKey();
        }
    }
}

実行結果:

//この表示は一例です。表示内容はテキストファイルの内容に依存します。
侍
エンジニア
塾

このようにして、テキストファイルの中身を表示することができました。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】テキストファイルを読み込む方法(StreamReader)
更新日 : 2019年4月3日

ファイルにテキストを書き込む方法

ファイルにテキストを上書き保存するには、「StreamWriter」のコンストラクタの第2引数に「false」を指定します。

作成するファイルが存在しない場合には、新規にファイルが作成されます。

すでにファイルが存在する場合には、そのファイルは削除されて上書き保存されるので注意が必要です。

次のプログラムで確認してみましょう。

using System;
using System.IO;
using System.Text;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            // 文字コードを指定
            Encoding enc = Encoding.GetEncoding("Shift_JIS");

            // ファイルを開く
            StreamWriter writer = new StreamWriter(@"C:\Samurai\samurai.txt", false, enc);

            // テキストを書き込む
            writer.WriteLine("この内容を書き込みます");

            // ファイルを閉じる
            writer.Close();

            Console.WriteLine("ファイルに書き込みました");
            Console.ReadKey();
        }
    }
}

実行結果:

ファイルに書き込みました

このプログラムでは、初めに「Encoding.GetEncoding("Shift_JIS")」文字コードを指定しています。

次に「StreamWriter」でファイルを開いています。

「writer.WriteLine」でテキストを書き込み、「writer.Close」でファイルを閉じて処理を完了させています。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルにテキストを書き込む(文字コード/StreamWriter)
更新日 : 2019年4月16日

ファイルパスからファイル名を取得する方法

ファイル名をパスから取得するには、「GetFileNameメソッド」を使います。

引数にファイルのパスを指定すると、戻り値としてファイル名が取得できます。

「GetFileNameメソッド」の使い方を次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string filePath = Path.GetFileName(@"C:Samurai\samurai.txt");

            Console.WriteLine(filePath);
            Console.ReadKey();
        }
    }
}

実行結果:

samurai.txt

このプログラムでは、「GetFileNameメソッド」を使ってファイルのパスからファイル名だけを取得して表示しています。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルパスからファイル名を取得する方法(GetFileName)
更新日 : 2019年2月24日

ファイルとフォルダの存在チェックをする方法

Existsメソッドでファイルの存在チェックをするには、引数にチェックしたいファイルのパスを指定します。

ファイルのパスの指定は、先頭に「@」をつけて行うのが便利です。

ファイルの存在チェックをする方法を次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string filePath = @"C:\Samurai\samurai.txt";

            if (File.Exists(filePath))
            {
                Console.WriteLine("存在します");
            }
            else
            {
                Console.WriteLine("存在しません");
            }

            Console.ReadKey();
        }
    }
}

実行結果:

存在します

このプログラムでは、指定したパスにファイルが存在するため、Existsメソッドが”true”を返しています。

このようにしてファイルの存在を確認することができました!

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルとフォルダの存在チェックをするExistsメソッド
更新日 : 2019年5月13日

ファイルを削除する方法

FileクラスのDeleteメソッドは引数に削除したいファイルのパスを指定することで使用できます。

次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            File.Delete(@"C:\Samurai\samurai.txt");

            Console.WriteLine("ファイルが削除されました");
            Console.ReadKey();
        }
    }
}

実行結果:

ファイルが削除されました

このようにしてファイルを削除することができました。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルを削除するDeleteメソッド(強制削除も解説)
更新日 : 2019年2月24日

ファイルをコピーする方法

FileクラスのCopyメソッドは第1引数にコピー元のファイルパスを指定して、第2引数にコピー先のパスを指定することで使用できます。

次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            File.Copy(@"C:\Samurai\samurai.txt", @"C:\Samurai\samurai2.txt");

            Console.WriteLine("ファイルがコピーされました");
            Console.ReadKey();
        }
    }
}

実行結果:

ファイルがコピーされました

このようにしてファイルをコピーすることができました。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルをコピーするCopyメソッド(上書き保存も解説)
更新日 : 2019年6月11日

ファイルを検索する方法

DirectoryクラスGetFilesメソッドで指定したフォルダ内を検索する方法を解説します。

GetFilesメソッドは第1引数にフォルダのパスを指定します。

第2引数に検索パターンを指定します。

第3引数にはサブフォルダも検索する場合には「SearchOption.AllDirectories」を指定します。
サブフォルダを検索しない場合には省略できます。

検索パターンにワイルドカードの"*"を指定することで、すべてのファイルのパスを戻り値として取得することができます。

GetFilesメソッドの使い方を次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string[] files = Directory.GetFiles(@"C:\Samurai", "*");

            foreach (string str in files)
            {
                Console.WriteLine(str);
            }

            Console.ReadKey();
        }
    }
}

実行結果:

C:\Samurai\samurai.jpg
C:\Samurai\samurai.txt

このプログラムでは、指定したフォルダ内すべてのファイルのパスを取得して表示しています。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルを高速に検索して一覧で取得する(速度の比較も解説)
更新日 : 2019年6月12日

ファイルサイズを取得する方法

ファイルサイズを取得するLengthプロパティの使い方を解説します。

Lengthプロパティを使うには、FileInfoクラスのコンストラクタの引数にファイルのパスを指定します。

次のプログラムで確認してみましょう。

using System;
using System.IO;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            FileInfo file = new FileInfo(@"C:\Samurai\samurai.zip");
            long size = file.Length;

            Console.WriteLine("ファイルサイズは、{0}バイトです。", size);

            Console.ReadKey();
        }
    }
}

実行結果:

ファイルサイズは、10750669バイトです。

このようにLengthプロパティを使ってファイルサイズを取得することができました。

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

【C#入門】ファイルサイズを取得するLengthプロパティの使い方
更新日 : 2019年5月28日

まとめ

いかがでしたか?

今回はファイルの様々な使い方をまとめて解説しました。

ファイルの読み書きやコピーなど、必要に応じて使い分けてくださいね。

もし、ファイルの使い方を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]