.NET Framework のファイル I/O とファイル システムの基礎
更新 : 2007 年 11 月
System.IO 名前空間には、.NET Framework でファイルとディレクトリを操作する機能を実現する File クラスと Directory クラスが用意されています。これらのオブジェクトのメソッドは静的メンバまたは共有メンバであるため、最初にクラスのインスタンスを作成しなくてもメンバを直接使用できます。これらのクラスに関連するクラスとして、FileInfo クラスと DirectoryInfo クラスがあります。My 機能を使用しているユーザーにはおなじみのクラスです。これらのクラスを使用するには、名前を完全修飾するか、または、関係するコードの先頭に Imports ステートメントを記述して、適切な名前空間をインポートする必要があります。詳細については、「Imports ステートメント (.NET 名前空間および型)」を参照してください。
ストリームの定義
.NET Framework では、ファイルに対する読み取りと書き込みをサポートするストリームを使用できます。ストリームとは、1 次元の連続したデータの集まりと考えることができます。ストリームには先頭と末尾があり、カーソルでストリーム内での現在の位置を示します。
ストリームの操作
ストリームに格納されているデータは、メモリ、ファイル、または TCP/IP ソケットから取得したものです。ストリームに対しては、次の基本操作を実行できます。
読み取り。ストリームを読み取ったり、文字列やバイト配列などのデータ構造にストリームからデータを転送したりできます。
書き込み。ストリームに書き込んだり、データ ソースからストリームにデータを転送したりできます。
シーク。ストリーム内の現在の位置をクエリおよび変更できます。
詳細については、「ストリームの構成」を参照してください。
ストリームの種類
.NET Framework では、ストリームは Stream クラスで表されます。その他のすべてのストリームのための抽象クラスです。Stream クラスのインスタンスを直接作成することはできません。これを実装するいずれかのクラスを使用する必要があります。
ストリームにはさまざまな種類がありますが、ファイルの入出力 (I/O) を処理するという目的のために最も重要なのは、ファイルに対する読み取りと書き込みを実現する FileStream クラスと、分離ストレージに対するファイルやディレクトリの作成を実現する IsolatedStorageFileStream クラスです。この他、ファイル I/O を処理するときに使用できるストリームには、以下のものがあります。
次の表は、ストリームで一般的に実行するタスクの一覧です。
目的 |
参照項目 |
---|---|
データ ファイルに対する読み取りと書き込み |
|
XML ファイルの読み取り |
|
ファイルにテキストを書き込むためのストリーム ライタの作成 |
|
ファイルのテキストの読み取り |
|
ファイルへのテキストの書き込み |
|
文字列からの文字の読み取り |
|
文字列への文字の書き込み |
|
データの暗号化 |
|
データの復号化 |
ファイル アクセスと属性
ファイルの作成、オープン、および共有の方法は、FileAccess、FileMode、および FileShare の各列挙体で制御できます。これらの列挙体には、FileStream クラスのコンストラクタで使用するフラグが含まれています。たとえば、FileStream を開くかまたは新規作成するときに、ファイルを追加書き込み用に開くかどうか、指定のファイルが存在しない場合にファイルを新規作成するかどうか、ファイルを上書きするかどうか、などを FileMode 列挙体で指定できます。
FileAttributes 列挙体を使用すると、ファイル固有の情報を収集できます。FileAttributes 列挙体は、格納されているファイルの属性を返します。これらの属性によって、圧縮ファイル、暗号化されたファイル、隠しファイル、読み取り専用ファイル、アーカイブ、ディレクトリ、システム ファイル、一時ファイルであるかどうかがわかります。
次の表は、ファイル アクセスとファイル属性に関連するタスクの一覧です。
目的 |
参照項目 |
---|---|
ログ ファイルのオープンとテキストの追加 |
|
ファイルの属性の判断 |
ファイルのアクセス許可
ファイルおよびディレクトリに対するアクセスの制御は、FileIOPermission クラスで行うことができます。これは、Web フォームの開発者には特に重要な場合があります。既定では、Web フォームは、ASPNET という名前の特別なローカル ユーザー アカウントのコンテキストで実行されます。ASPNET は、ASP.NET および .NET Framework のインストール時に作成されます。ASPNET ユーザー アカウントはアクセス許可が制限されているため、アプリケーションがリソースへのアクセスを要求したときに、ユーザーが処理を実行できない場合があります (たとえば、Web アプリケーションからファイルへの書き込みなど)。詳細については、「アクセス許可」、「アクセス許可の要求」、および「FileIOPermission クラス」を参照してください。
次の表は、ファイルのアクセス許可に関連するタスクの一覧です。
目的 |
参照項目 |
---|---|
最低限のアクセス許可の要求 |
|
オプションのアクセス許可の要求 |
|
アクセス許可の拒否 |
|
組み込みのアクセス許可の要求 |
|
XML でエンコードされたアクセス許可の要求 |
分離ファイル ストレージ
分離ストレージとは、ファイルを扱うときに、必要なアクセス許可をユーザーまたはコードが持っていないために生じる問題を解決するためのものです。分離ストレージでは、各ユーザーにデータ コンパートメントが割り当てられます。このデータ コンパートメントには、1 つまたは複数のストアを保持できます。ストアは、ユーザーおよびアセンブリごとに互いに分離できます。ストアにアクセスできるのは、それを作成したユーザーおよびアセンブリのみです。ストアは、完全な仮想ファイル システムとして機能します。つまり、ストア内にディレクトリやファイルを作成および操作できます。
次の表は、分離ファイル ストレージに一般に関連するタスクの一覧です。
目的 |
参照項目 |
---|---|
分離ストアの作成 |
|
分離ストアの列挙 |
|
分離ストアの削除 |
|
分離ストレージのファイルまたはディレクトリの作成 |
|
分離ストレージのファイルの検索 |
|
分離ストレージのファイルに対する読み取りと書き込み |
|
分離ストレージのファイルまたはディレクトリの削除 |
ファイルのイベント
FileSystemWatcher コンポーネントを使用すると、自システム上のファイルとディレクトリ、またはネットワークでアクセスできる任意のコンピュータ上のファイルとディレクトリの変更を監視できます。たとえば、ファイルが変更されたときに、その旨をユーザーに警告することが必要な場合があります。変更が行われると、1 つまたは複数のイベントが発生し、バッファに格納され、FileSystemWatcher コンポーネントに渡されて処理されます。詳細については、「ファイル システム イベントへの応答」を参照してください。
目的 |
参照項目 |
---|---|
ファイル システム イベントのハンドラの作成 |
|
FileSystemWatcher コンポーネント インスタンスの構成 |
参照
概念
.NET Framework のファイル I/O とファイル システムで使用するクラス