C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でのファイル操作とは?FileStreamクラスによるファイル入出力の基本を解説

C#におけるファイル操作の概要

C#では、アプリケーションからさまざまなファイル操作を行うことができます。代表的な操作は以下の通りです。

  • ファイルの作成・オープン・読み込み・書き込み
  • 既存ファイルへのデータ追記(アペンド)
  • ファイルの削除 など

System.IO名前空間に属するFileStreamクラスを使用すると、ファイルからの読み取り、ファイルへの書き込み、そしてクローズといった一連の処理を実現できます。このクラスは、抽象クラスであるStreamクラスから派生しています。

FileStreamオブジェクトの作成方法

新しいファイルを作成する場合や、既存のファイルを開く場合には、FileStreamオブジェクトを作成する必要があります。その構文は以下の通りです。

FileStream = new FileStream( <file_name>, <FileMode Enumerator>,
<FileAccess Enumerator>, <FileShare Enumerator>);

ここで指定する各列挙型は、それぞれ以下のような役割を持っています。

FileMode列挙型

FileMode列挙型は、ファイルを開く際のさまざまなモードを定義します。主なメンバーは以下の通りです。

  • Append − 既存のファイルを開き、カーソルをファイル末尾へ移動します。ファイルが存在しない場合は新しく作成されます。

  • Create − 新しいファイルを作成します。

  • CreateNew − オペレーティングシステムに対して、必ず新しいファイルを作成するよう指定します。

  • Open − 既存のファイルを開きます。

  • OpenOrCreate − ファイルが存在すればそれを開き、存在しなければ新規作成するようOSに指示します。

  • Truncate − 既存のファイルを開き、そのサイズを0バイトに切り詰めます。

FileAccess列挙型

FileAccess列挙型は、ファイルへのアクセス権限を指定します。メンバーは以下の3種類です。

  • Read(読み取り専用)
  • ReadWrite(読み書き両用)
  • Write(書き込み専用)

FileShare列挙型

FileShare列挙型は、他のプロセスとファイルを共有するかどうかを制御します。以下のメンバーが用意されています。

  • Inheritable − ファイルハンドルを子プロセスへ継承することを許可します。

  • None − 現在のファイルの共有を拒否します。

  • Read − 読み取り目的でファイルを開くことを許可します。

  • ReadWrite − 読み取りおよび書き込みの目的でファイルを開くことを許可します。

  • Write − 書き込み目的でファイルを開くことを許可します。

サンプルコード:ファイルの作成・オープン・読み込み

それでは、実際にファイルの作成、オープン、内容の読み込みを行う例を見てみましょう。

using System;
using System.IO;

namespace FileIOApplication {
    class Program {
        static void Main(string[] args) {
            FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate,
            FileAccess.ReadWrite);
            for (int i = 1; i <= 20; i++) {
                F.WriteByte((byte)i);
            }
            F.Position = 0;
            for (int i = 0; i <= 20; i++) {
                Console.Write(F.ReadByte() + " ");
            }
            F.Close();
            Console.ReadKey();
        }
    }
}

実行結果

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

このプログラムでは、まず「test.dat」というファイルを読み書き可能な状態でオープンし、1から20までのバイト値を順番に書き込んでいます。その後、F.Position = 0;でストリームの位置を先頭に戻し、データを再び読み出してコンソールに表示しています。

最後に「-1」が出力されているのは、読み出し側のループが21回実行されるためです。ファイルには20バイトしか存在せず、それ以上読み込むデータがない場合、ReadByte()メソッドはファイルの終端(EOF)を示す「-1」を返します。これはファイル終端の判定によく使われる挙動なので、覚えておくと便利です。

  1. 7Zファイルとは?開き方・作り方・変換方法をわかりやすく解説

    拡張子が .7Z のファイルは、「7-Zip Compressed(7-Zip圧縮ファイル)」と呼ばれる圧縮アーカイブです。パソコン上のフォルダに少し似ていますが、実際にはひとつのファイルとして機能します。 フォルダと7Zファイルは、どちらも複数のファイルやサブフォルダを格納できる点で共通しています。しかしフォルダと違って、7Zファイルは .7Z という拡張子を持つ単一のファイルであり、中身のデータを圧縮してまとめたアーカイブである点が大きな違いです。 7Zファイルを目にするのは、主にインターネットからファイルをダウンロードするときです。ソフトウェア一式、写真アルバム、大量のドキュメントなど

  2. AIファイルとは?開き方から変換方法まで徹底解説

    この記事のポイントAIファイルは、Adobe Illustrator(アドビ イラストレーター)で作成されるベクター画像ファイルです。開くにはIllustratorを使用するか、無料のInkscapeなどを利用できます。Zamzarなどのオンラインツールや各種ソフトを使って、PNG・JPG・SVGなどの形式に変換できます。この記事では、AIファイルの概要から、実際に開く方法、SVG・JPG・PDF・PNGなど他の形式への変換方法まで、わかりやすく解説します。他のソフトウェアとの互換性を持たせたい場合にも役立つ内容です。AIファイルとは何か拡張子が「.ai」のファイルは、ほとんどの場合、Adob