この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語
このドキュメントはアーカイブされており、メンテナンスされていません。

FileStream クラス

同期および非同期の読み取り操作と書き込み操作をサポートするファイル用の Stream を公開します。

名前空間:  System.IO
アセンブリ:  mscorlib (mscorlib.dll 内)

[ComVisibleAttribute(true)]
public class FileStream : Stream

FileStream 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドFileStream(IntPtr, FileAccess) 互換性のために残されています。 FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可を使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドFileStream(SafeFileHandle, FileAccess) FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可を使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドXNA Framework によるサポートFileStream(String, FileMode) FileStream クラスの新しいインスタンスを、指定したパスと作成モードを使用して作成します。
パブリック メソッドFileStream(IntPtr, FileAccess, Boolean) 互換性のために残されています。 FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可と FileStream インスタンスの所有権を使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドFileStream(SafeFileHandle, FileAccess, Int32) FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可、およびバッファー サイズを使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドXNA Framework によるサポートFileStream(String, FileMode, FileAccess) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、および読み取り/書き込みアクセス許可を使用して初期化します。
パブリック メソッドFileStream(IntPtr, FileAccess, Boolean, Int32) 互換性のために残されています。 FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可、FileStream インスタンスの所有権、およびバッファー サイズを使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドFileStream(SafeFileHandle, FileAccess, Int32, Boolean) FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可、バッファー サイズ、および同期状態または非同期状態を使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドXNA Framework によるサポートFileStream(String, FileMode, FileAccess, FileShare) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、読み取り/書き込みアクセス許可、および共有アクセス許可を使用して初期化します。
パブリック メソッドFileStream(IntPtr, FileAccess, Boolean, Int32, Boolean) 互換性のために残されています。 FileStream クラスの新しいインスタンスを、指定した読み取り/書き込みアクセス許可、FileStream インスタンスの所有権、バッファー サイズ、および同期状態または非同期状態を使用して、指定したファイル ハンドル用に初期化します。
パブリック メソッドXNA Framework によるサポートFileStream(String, FileMode, FileAccess, FileShare, Int32) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、読み取り/書き込みアクセス許可、共有アクセス許可、およびバッファー サイズを使用して初期化します。
パブリック メソッドXNA Framework によるサポートFileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、読み取り/書き込みアクセス許可、共有アクセス許可、バッファー サイズ、および同期状態または非同期状態を使用して初期化します。
パブリック メソッドFileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、読み取り/書き込みアクセス許可、共有アクセス許可、同一のファイルに対して他の FileStream が保有できるアクセス、バッファー サイズ、および追加のファイル オプションを使用して初期化します。
パブリック メソッドFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、アクセス権、共有アクセス許可、バッファー サイズ、および追加のファイル オプションを使用して初期化します。
パブリック メソッドFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity) FileStream クラスの新しいインスタンスを、指定したパス、作成モード、アクセス権、共有アクセス許可、バッファー サイズ、追加のファイル オプション、アクセス制御、および監査セキュリティを使用して初期化します。
このページのトップへ

  名前説明
パブリック プロパティXNA Framework によるサポートCanRead現在のストリームが読み取りをサポートしているかどうかを示す値を取得します。 (Stream.CanRead をオーバーライドします。)
パブリック プロパティXNA Framework によるサポートCanSeek現在のストリームがシークをサポートしているかどうかを示す値を取得します。 (Stream.CanSeek をオーバーライドします。)
パブリック プロパティXNA Framework によるサポートCanTimeout現在のストリームがタイムアウトできるかどうかを決定する値を取得します。 (Stream から継承されます。)
パブリック プロパティXNA Framework によるサポートCanWrite現在のストリームが書き込みをサポートしているかどうかを示す値を取得します。 (Stream.CanWrite をオーバーライドします。)
パブリック プロパティHandle 互換性のために残されています。 現在の FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドルを取得します。
パブリック プロパティXNA Framework によるサポートIsAsync FileStream が非同期的に開かれたか、同期的に開かれたかを示す値を取得します。
パブリック プロパティXNA Framework によるサポートLengthストリーム長 (バイト単位) を取得します。 (Stream.Length をオーバーライドします。)
パブリック プロパティXNA Framework によるサポートNameコンストラクターに渡された FileStream の名前を取得します。
パブリック プロパティXNA Framework によるサポートPositionストリームの現在位置を取得または設定します。 (Stream.Position をオーバーライドします。)
パブリック プロパティXNA Framework によるサポートReadTimeoutストリームがタイムアウト前に読み取りを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
パブリック プロパティSafeFileHandle現在の FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドルを表す SafeFileHandle オブジェクトを取得します。
パブリック プロパティXNA Framework によるサポートWriteTimeoutストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (Stream から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドXNA Framework によるサポートBeginRead非同期の読み取りを開始します。 (Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) をオーバーライドします。)

XNA Framework 3.0では、このメンバーは Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) から継承されています。
パブリック メソッドXNA Framework によるサポートBeginWrite非同期の書き込みを開始します。 (Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) をオーバーライドします。)

XNA Framework 3.0では、このメンバーは Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) から継承されています。
パブリック メソッドXNA Framework によるサポートClose現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream)現在のストリームからバイトを読み取り、コピー先のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCopyTo(Stream, Int32)指定されたバッファー サイズを使用して、現在のストリームからすべてのバイトを読み取り、コピー先のストリームに書き込みます。 (Stream から継承されます。)
パブリック メソッドCreateObjRefリモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドXNA Framework によるサポートCreateWaitHandle 互換性のために残されています。 WaitHandle オブジェクトを割り当てます。 (Stream から継承されます。)
パブリック メソッドXNA Framework によるサポートDispose() Stream によって使用されているすべてのリソースを解放します。 (Stream から継承されます。)
プロテクト メソッドXNA Framework によるサポートDispose(Boolean) FileStream によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (Stream.Dispose(Boolean) をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートEndRead保留中の非同期読み取りが完了するまで待機します。 (Stream.EndRead(IAsyncResult) をオーバーライドします。)

XNA Framework 3.0では、このメンバーは Stream.EndRead(IAsyncResult) から継承されています。
パブリック メソッドXNA Framework によるサポートEndWrite非同期の書き込みを終了し、I/O 操作が完了するまでブロックします。 (Stream.EndWrite(IAsyncResult) をオーバーライドします。)

XNA Framework 3.0では、このメンバーは Stream.EndWrite(IAsyncResult) から継承されています。
パブリック メソッドXNA Framework によるサポートEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドXNA Framework によるサポートFinalizeガベージ コレクターが FileStream を利用しているときに、リソースの解放およびその他のクリーンアップ操作を確実に実行します。 (Object.Finalize() をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートFlush()このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにします。 (Stream.Flush() をオーバーライドします。)
パブリック メソッドFlush(Boolean)このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにし、すべての中間ファイル バッファーもクリアします。
パブリック メソッドGetAccessControl現在の FileStream オブジェクトが示すファイルのアクセス制御リスト (ACL: Access Control List) エントリをカプセル化する FileSecurity オブジェクトを取得します。
パブリック メソッドXNA Framework によるサポートGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetLifetimeService対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッドXNA Framework によるサポートGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドInitializeLifetimeService対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッドLock FileStream に対する他のプロセスの読み取りまたは書き込みを禁止します。
プロテクト メソッドXNA Framework によるサポートMemberwiseClone() 現在の Object の浅いコピーを作成します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone(Boolean)現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (MarshalByRefObject から継承されます。)
プロテクト メソッドObjectInvariantインフラストラクチャ。 Contract のサポートを提供します。 (Stream から継承されます。)
パブリック メソッドXNA Framework によるサポートReadストリームからバイトのブロックを読み取り、そのデータを特定のバッファーに書き込みます。 (Stream.Read(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートReadByteファイルからバイトを読み取り、読み取り位置を 1 バイト進めます。 (Stream.ReadByte() をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートSeekストリームの現在位置を特定の値に設定します。 (Stream.Seek(Int64, SeekOrigin) をオーバーライドします。)
パブリック メソッドSetAccessControl FileSecurity オブジェクトが示すアクセス制御リスト (ACL) エントリを、現在の FileStream オブジェクトが示すファイルに適用します。
パブリック メソッドXNA Framework によるサポートSetLengthストリーム長を特定の値に設定します。 (Stream.SetLength(Int64) をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッドUnlock他のプロセスにより以前にロックされたファイルの全部または一部へのアクセスを許可します。
パブリック メソッドXNA Framework によるサポートWriteバッファーのデータを使用して、ストリームにバイトのブロックを書き込みます。 (Stream.Write(Byte[], Int32, Int32) をオーバーライドします。)
パブリック メソッドXNA Framework によるサポートWriteByteファイル ストリームの現在位置にバイトを書き込みます。 (Stream.WriteByte(Byte) をオーバーライドします。)
このページのトップへ

FileStream クラスは、ファイル システム上のファイルの読み取り、書き込み、オープン、クローズ、およびファイル関連のその他のオペレーティング システム ハンドル (パイプ、標準入力、標準出力など) の操作に使用します。 読み取りおよびき込みの操作を指定して、同期または非同期のいずれかにすることができます。 FileStream は、パフォーマンス向上のために入出力をバッファリングします。

FileStream オブジェクトは、Seek メソッドを使用してファイルへのランダム アクセスをサポートします。 Seek を使用すると、ファイル内の任意の位置に読み取り/書き込み位置を移動できます。 これはバイト オフセット参照ポイントのパラメーターで行います。 バイト オフセットはシーク参照ポイントに対して相対的です。シーク参照ポイントを SeekOrigin クラスの 3 つのプロパティの指定に従って、基になるファイルの先頭、現在位置、または末尾のいずれかに指定できます。

メモメモ

ディスク ファイルは、常にランダム アクセスをサポートします。 構築時に、基になるファイルの種類に応じて、CanSeek プロパティが true または false に設定されます。 具体的には、基になるファイルの種類が winbase.h で定義される FILE_TYPE_DISK の場合、CanSeek プロパティは true に設定されます。 それ以外の場合、CanSeek プロパティは false に設定されます。

同期メソッドの Read および Write と、非同期メソッドの BeginReadBeginWriteEndRead、および EndWrite は、同期モードまたは非同期モードのどちらでも動作できますが、モードはこれらのメソッドのパフォーマンスに影響します。 FileStream は、既定ではファイルを同期的に開きますが、ファイルを非同期的に開く FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) コンストラクターも用意されています。

ファイルの一部がロックされた状態でプロセスが終了した場合、またはロックが保留されているファイルを閉じた場合の動作は未定義です。

ディレクトリとその他のファイル操作については、FileDirectoryPath の各クラスのトピックを参照してください。 File クラスは、ファイル パス、標準入力、標準出力、および標準エラー デバイスに基づいた FileStream オブジェクトの作成を主とする静的メソッドを持つユーティリティ クラスです。 MemoryStream クラスは、FileStream と同様に、バイト配列と関数からストリームを作成します。

共通 I/O タスクの一覧については、「共通 I/O タスク」を参照してください。

ストリームの位置の変更の検出

FileStream オブジェクトがハンドルを排他的に保持していない場合、別のスレッドが同時にファイル ハンドルにアクセスし、ファイル ハンドルに関連付けられたオペレーティング システムのファイル ポインターの位置を変更する可能性があります。 この場合、FileStream オブジェクト内にキャッシュされた位置とバッファー内にキャッシュされたデータが侵害される可能性があります。 FileStream オブジェクトは、キャッシュされたバッファーにアクセスするメソッドを定期的にチェックして、オペレーティング システムのハンドル位置が FileStream オブジェクトで使用されるキャッシュされた位置と同じであることを保証します。

Read メソッドの呼び出し時に、ハンドル位置の予期しない変更が検出された場合、.NET Framework はバッファーの内容を破棄し、ファイルからストリームを再度読み取ります。 ファイルのサイズや、ファイル ストリームの位置に影響を及ぼす可能性のある他のプロセスによっては、これはパフォーマンスに影響する場合があります。

Write メソッドの呼び出し時に、ハンドル位置の予期しない変更が検出された場合には、バッファーの内容が破棄され、IOException がスローされます。

SafeFileHandle プロパティを使用してハンドルを公開した場合、またはコンストラクターで FileStream オブジェクトに SafeFileHandle プロパティが指定された場合に、FileStream オブジェクトはハンドルを排他的に保持しなくなります。

FileStream コンストラクターのいくつかを使用する例を次に示します。


using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());

            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}


ファイルを開くか、ファイルが存在しない場合はファイルを作成して、そのファイルの末尾に情報を追加する例を次に示します。


using System;
using System.IO;
using System.Text;

class FSOpenWrite
{
    public static void Main()
    {
        FileStream fs=new FileStream("c:\\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
        fs.Close();
        StreamWriter sw=new StreamWriter("c:\\Variables.txt", true, Encoding.ASCII);
        string NextLine="This is the appended line.";
        sw.Write(NextLine);
        sw.Close();
    }
}


.NET Framework

サポート対象: 4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
表示: