カテゴリ: C# 更新日: 2025/11/10

C#のusing文を使ったファイル操作の安全な書き方

C#のusing文を使ったファイル操作の安全な書き方
C#のusing文を使ったファイル操作の安全な書き方

先生と生徒の会話形式で理解しよう

生徒

「先生、C#でファイルを開いて読み書きする時に、ちゃんと閉じるのを忘れるとどうなるんですか?」

先生

「良い質問だね。ファイルを開いたまま閉じないと、他のプログラムがそのファイルを使えなくなったり、エラーが起きたりするんだ。」

生徒

「なるほど…でも毎回閉じるのを忘れそうです。自動で閉じる方法はありますか?」

先生

「それにはusing文を使うといいよ。C#では、using文を使えばファイルを安全に扱って、使い終わったら自動で閉じてくれるんだ。」

生徒

「それなら安心ですね!実際にどう使うのか教えてください!」

先生

「よし、それではusing文を使った安全なファイル操作の方法を見ていこう!」

1. using文とは?

1. using文とは?
1. using文とは?

C#のusing文とは、「使い終わったら自動的に後片付けをしてくれる」便利な構文です。特にファイル操作では、開いたファイルを閉じ忘れるとエラーや不具合の原因になります。using文を使うと、プログラムが終わった時に自動でファイルを閉じてくれるため、安全にファイルを扱うことができます。

たとえば、ファイルを開いて読み書きするクラスにはStreamReaderStreamWriterがあります。これらはファイルを開くと内部的に「リソース(資源)」を使います。このリソースをきちんと解放するために、using文を使うのです。

2. using文を使った基本構文

2. using文を使った基本構文
2. using文を使った基本構文

まずは、using文の基本的な形を見てみましょう。以下のように書きます。


using (リソースの宣言)
{
    // リソースを使う処理
}

このusingの中でファイルを開くと、ブロック(中かっこの範囲)を出た瞬間に自動的にファイルを閉じてくれます。わざわざClose()を呼び出す必要がありません。

3. ファイルにテキストを書き込む例

3. ファイルにテキストを書き込む例
3. ファイルにテキストを書き込む例

実際にusingを使ってファイルに文字を書き込んでみましょう。C#では、StreamWriterクラスを使うと簡単にテキストファイルを書けます。


using (StreamWriter writer = new StreamWriter("sample.txt"))
{
    writer.WriteLine("こんにちは、C#の世界へようこそ!");
    writer.WriteLine("using文を使えば安全にファイルを書けます。");
}

このコードでは、StreamWritersample.txtというファイルを開き、テキストを書き込んでいます。using文を使っているので、ブロックの外に出た瞬間にファイルは自動的に閉じられます。

実行後、プロジェクトのフォルダにsample.txtが作成され、中に書いた内容が保存されます。


こんにちは、C#の世界へようこそ!
using文を使えば安全にファイルを書けます。

4. ファイルを安全に読み込む例

4. ファイルを安全に読み込む例
4. ファイルを安全に読み込む例

次に、同じファイルを読み込む例を見てみましょう。ファイルを読むにはStreamReaderを使います。


using (StreamReader reader = new StreamReader("sample.txt"))
{
    string text = reader.ReadToEnd();
    Console.WriteLine(text);
}

このコードでは、ReadToEnd()メソッドでファイル全体を読み込み、内容をコンソールに出力しています。using文のおかげで、ファイルを開いたまま閉じ忘れることがありません。


こんにちは、C#の世界へようこそ!
using文を使えば安全にファイルを書けます。

5. using文を使わない場合との違い

5. using文を使わない場合との違い
5. using文を使わない場合との違い

もしusing文を使わずにファイルを扱うと、自分でClose()を呼び出す必要があります。例を見てみましょう。


StreamWriter writer = new StreamWriter("sample.txt");
writer.WriteLine("usingを使わない書き方です。");
writer.Close();

このように書くと、もし途中でエラーが起きた場合にClose()が呼ばれず、ファイルが開いたままになる可能性があります。そのため、安全性の面ではusing文を使うほうが確実です。

6. using文の仕組みをもう少し詳しく

6. using文の仕組みをもう少し詳しく
6. using文の仕組みをもう少し詳しく

using文の内部では、ファイルを開くオブジェクトがIDisposableという仕組みを持っています。このIDisposableにはDispose()というメソッドがあり、ファイルを閉じたりリソースを解放したりする処理が行われます。

つまり、using文は次のような処理を自動でしてくれるということです。


StreamWriter writer = new StreamWriter("sample.txt");
try
{
    writer.WriteLine("これはusing文と同じ動作です。");
}
finally
{
    writer.Dispose(); // 自動的に呼び出される
}

こうしてみると、using文は実はとても便利な「省略記法」であることがわかります。

7. 複数のファイルを同時に扱う場合

7. 複数のファイルを同時に扱う場合
7. 複数のファイルを同時に扱う場合

複数のファイルを同時に扱いたい場合も、using文をネストして書くことで安全に操作できます。


using (StreamReader reader = new StreamReader("input.txt"))
using (StreamWriter writer = new StreamWriter("output.txt"))
{
    string text = reader.ReadToEnd();
    writer.WriteLine("コピー内容:");
    writer.WriteLine(text);
}

このように、2つのusing文を重ねて使うことも可能です。どちらのファイルも自動的に閉じられるため、複数ファイル操作でも安心です。

8. まとめ:using文で安全なファイル操作を

8. まとめ:using文で安全なファイル操作を
8. まとめ:using文で安全なファイル操作を

ファイル操作はプログラムの基本ですが、同時にミスもしやすい部分です。using文を使うことで、「開いたら必ず閉じる」というルールを自動化でき、安全でエラーの少ないコードを書くことができます。

特にStreamWriterStreamReaderを使うときには、常にusing文を使う習慣をつけると良いでしょう。これが、C#でのファイル操作を正しく行うための第一歩です。

カテゴリの一覧へ
新着記事
C#でタイムスタンプの精度を上げるためのテクニックを徹底解説!(初心者向け)
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド