.NET Framework のファイル I/O とファイル システムの基礎

更新 : 2007 年 11 月

System.IO 名前空間には、.NET Framework でファイルとディレクトリを操作する機能を実現する File クラスと Directory クラスが用意されています。これらのオブジェクトのメソッドは静的メンバまたは共有メンバであるため、最初にクラスのインスタンスを作成しなくてもメンバを直接使用できます。これらのクラスに関連するクラスとして、FileInfo クラスと DirectoryInfo クラスがあります。My 機能を使用しているユーザーにはおなじみのクラスです。これらのクラスを使用するには、名前を完全修飾するか、または、関係するコードの先頭に Imports ステートメントを記述して、適切な名前空間をインポートする必要があります。詳細については、「Imports ステートメント (.NET 名前空間および型)」を参照してください。

ストリームの定義

.NET Framework では、ファイルに対する読み取りと書き込みをサポートするストリームを使用できます。ストリームとは、1 次元の連続したデータの集まりと考えることができます。ストリームには先頭と末尾があり、カーソルでストリーム内での現在の位置を示します。

Filestream 内の現在の位置を示すカーソル

ストリームの操作

ストリームに格納されているデータは、メモリ、ファイル、または TCP/IP ソケットから取得したものです。ストリームに対しては、次の基本操作を実行できます。

  • 読み取り。ストリームを読み取ったり、文字列やバイト配列などのデータ構造にストリームからデータを転送したりできます。

  • 書き込み。ストリームに書き込んだり、データ ソースからストリームにデータを転送したりできます。

  • シーク。ストリーム内の現在の位置をクエリおよび変更できます。

詳細については、「ストリームの構成」を参照してください。

ストリームの種類

.NET Framework では、ストリームは Stream クラスで表されます。その他のすべてのストリームのための抽象クラスです。Stream クラスのインスタンスを直接作成することはできません。これを実装するいずれかのクラスを使用する必要があります。

ストリームにはさまざまな種類がありますが、ファイルの入出力 (I/O) を処理するという目的のために最も重要なのは、ファイルに対する読み取りと書き込みを実現する FileStream クラスと、分離ストレージに対するファイルやディレクトリの作成を実現する IsolatedStorageFileStream クラスです。この他、ファイル I/O を処理するときに使用できるストリームには、以下のものがあります。

次の表は、ストリームで一般的に実行するタスクの一覧です。

目的

参照項目

データ ファイルに対する読み取りと書き込み

方法 : 新しく作成されたデータ ファイルに対して読み書きする

XML ファイルの読み取り

共通の XmlReader タスク

ファイルにテキストを書き込むためのストリーム ライタの作成

ライタの作成

ファイルのテキストの読み取り

方法 : ファイルからテキストを読み取る

ファイルへのテキストの書き込み

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

文字列からの文字の読み取り

方法 : 文字列から文字を読み取る

文字列への文字の書き込み

方法 : 文字列に文字を書き込む

データの暗号化

データの暗号化

データの復号化

データの復号化

ファイル アクセスと属性

ファイルの作成、オープン、および共有の方法は、FileAccessFileMode、および FileShare の各列挙体で制御できます。これらの列挙体には、FileStream クラスのコンストラクタで使用するフラグが含まれています。たとえば、FileStream を開くかまたは新規作成するときに、ファイルを追加書き込み用に開くかどうか、指定のファイルが存在しない場合にファイルを新規作成するかどうか、ファイルを上書きするかどうか、などを FileMode 列挙体で指定できます。

FileAttributes 列挙体を使用すると、ファイル固有の情報を収集できます。FileAttributes 列挙体は、格納されているファイルの属性を返します。これらの属性によって、圧縮ファイル、暗号化されたファイル、隠しファイル、読み取り専用ファイル、アーカイブ、ディレクトリ、システム ファイル、一時ファイルであるかどうかがわかります。

次の表は、ファイル アクセスとファイル属性に関連するタスクの一覧です。

目的

参照項目

ログ ファイルのオープンとテキストの追加

方法 : ログ ファイルを開いて情報を追加する

ファイルの属性の判断

FileAttributes

ファイルのアクセス許可

ファイルおよびディレクトリに対するアクセスの制御は、FileIOPermission クラスで行うことができます。これは、Web フォームの開発者には特に重要な場合があります。既定では、Web フォームは、ASPNET という名前の特別なローカル ユーザー アカウントのコンテキストで実行されます。ASPNET は、ASP.NET および .NET Framework のインストール時に作成されます。ASPNET ユーザー アカウントはアクセス許可が制限されているため、アプリケーションがリソースへのアクセスを要求したときに、ユーザーが処理を実行できない場合があります (たとえば、Web アプリケーションからファイルへの書き込みなど)。詳細については、「アクセス許可」、「アクセス許可の要求」、および「FileIOPermission クラス」を参照してください。

次の表は、ファイルのアクセス許可に関連するタスクの一覧です。

目的

参照項目

最低限のアクセス許可の要求

方法 : アンマネージ コードへのアクセス許可を要求する

オプションのアクセス許可の要求

方法 : RequestOptional フラグを使用してオプションのアクセス許可を要求する

アクセス許可の拒否

方法 : RequestRefuse フラグを使用することにより、アクセス許可を拒否する

組み込みのアクセス許可の要求

方法 : 名前付きアクセス許可セットに対するアクセス許可を要求する

XML でエンコードされたアクセス許可の要求

XML でエンコードされたアクセス許可の要求

分離ファイル ストレージ

分離ストレージとは、ファイルを扱うときに、必要なアクセス許可をユーザーまたはコードが持っていないために生じる問題を解決するためのものです。分離ストレージでは、各ユーザーにデータ コンパートメントが割り当てられます。このデータ コンパートメントには、1 つまたは複数のストアを保持できます。ストアは、ユーザーおよびアセンブリごとに互いに分離できます。ストアにアクセスできるのは、それを作成したユーザーおよびアセンブリのみです。ストアは、完全な仮想ファイル システムとして機能します。つまり、ストア内にディレクトリやファイルを作成および操作できます。

次の表は、分離ファイル ストレージに一般に関連するタスクの一覧です。

目的

参照項目

分離ストアの作成

方法 : 分離ストレージでストアを取得する

分離ストアの列挙

方法 : 分離ストレージでストアを列挙する

分離ストアの削除

方法 : 分離ストレージでストアを削除する

分離ストレージのファイルまたはディレクトリの作成

方法 : 分離ストレージでファイルおよびディレクトリを作成する

分離ストレージのファイルの検索

方法 : 分離ストレージ内でファイルおよびディレクトリを検索する

分離ストレージのファイルに対する読み取りと書き込み

方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う

分離ストレージのファイルまたはディレクトリの削除

方法 : 分離ストレージでファイルおよびディレクトリを削除する

ファイルのイベント

FileSystemWatcher コンポーネントを使用すると、自システム上のファイルとディレクトリ、またはネットワークでアクセスできる任意のコンピュータ上のファイルとディレクトリの変更を監視できます。たとえば、ファイルが変更されたときに、その旨をユーザーに警告することが必要な場合があります。変更が行われると、1 つまたは複数のイベントが発生し、バッファに格納され、FileSystemWatcher コンポーネントに渡されて処理されます。詳細については、「ファイル システム イベントへの応答」を参照してください。

目的

参照項目

ファイル システム イベントのハンドラの作成

方法 : ファイル システム イベントに対するハンドラを作成する

FileSystemWatcher コンポーネント インスタンスの構成

方法 : FileSystemWatcher コンポーネントのインスタンスを設定する

参照

概念

ストリームの構成

基本のファイル I/O

非同期ファイル I/O

.NET Framework のファイル I/O とファイル システムで使用するクラス

その他の技術情報

分離ストレージ