スライドショー

【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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

中沢 丈

中沢 丈

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

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説