ファイル ストリームの使い方

提供: Appmethod Topics
移動先: 案内検索

ファイルの取り扱い への移動


TFileStream クラスを使用して、アプリケーションからディスク上のファイルを読み書きできます。 TFileStream はストリーム オブジェクトなので、共通のストリーム メソッドがあります。 これらのメソッドを使用すると、ファイルの読み書き、他のストリーム クラスとの間のデータ コピー、およびコンポーネント値の読み書きができます。 ファイル ストリームがストリーム クラスから継承する機能についての詳細は、「ストリームの使用」を参照してください。

さらに、ファイル ストリームを使ってファイル ハンドルにアクセスできるので、ファイル ハンドルを必要とするグローバルなファイル処理ルーチンも使用できます。

ファイル ストリームを使ってファイルを作成またはオープンする

ファイルを作成するかオープンしてそのファイルのハンドルにアクセスするには、TFileStream のインスタンスを作成します。 TFileStream インスタンスを作成すると、指定したファイルが開くか作成され、そのファイルについての読み取りと書き込みができるようになります。 ファイルが開けない場合には、TFileStream コンストラクタが例外を生成します。

Object Pascal:

 constructor Create(const filename: string; Mode: Word);

C++:

 __fastcall TFileStream(const AnsiString FileName, Word Mode);

Mode パラメータには、ファイル ストリーム作成時のファイルのオープン モードを指定します。 Mode パラメータは、オープン モードと共有モードを表す識別子を or で結んで指定します。 オープン モードには、次のいずれかの値を指定します。

オープン モード

意味

fmCreate

指定した名前でファイルを作成します。 指定した名前のファイルが既に存在する場合は、write モードでファイルを開く。

fmOpenRead

読み取り専用でファイルを開きます。

fmOpenWrite

書き込み専用でファイルを開きます。 ファイルへの書き込みにより、現在の内容は完全に置き換えられます。

fmOpenReadWrite

ファイルを開き、現在の内容を置き換えるのではなく、変更する。


共有モードには、下記の制約を条件として次のいずれかの値を指定できます。

共有モード

意味

fmShareCompat

共有モードは FCB を使って開く方法と互換性がある(VCL アプリケーションのみ)。

ファイル制御ブロック構造体の詳細は、MSDN ライブラリの「FCB 構造体」を参照。

fmShareExclusive

他のアプリケーションは、どんな理由があってもファイルを開くことができない。

fmShareDenyWrite

他のアプリケーションは、ファイルを読み取り用に開くことはできるが、書き込み用に開くことはできない。

fmShareDenyRead

他のアプリケーションは書き込み用にファイルを開くことはできるが、読み取り用に開くことはできない(VCL アプリケーションのみ)。

fmShareDenyNone

他のアプリケーションによるファイルの読み取りおよび書き込みを回避する処理は行われない。


共有モードの使用については、使用するオープン モードによって決まります。 次の表に、共有モードの使用可/不可をオープン モード別に示します。

共有モードの使用可/不可(オープン モード別)

オープン モード fmShareCompat(VCL) fmShareExclusive fmShareDenyWrite fmShareDenyRead(VCL) fmShareDenyNone

fmOpenRead

使用不可

使用不可

使用可能

使用不可

使用可能

fmOpenWrite

使用可能

使用可能

使用不可

使用可能

使用可能

fmOpenReadWrite

使用可能

使用可能

使用可能

使用可能

使用可能


ファイルのオープン モードと共有モードの定数は SysUtils ユニットで定義されています。

ファイル ハンドルの使い方

TFileStream のインスタンスを作成すると、ファイル ハンドルへアクセスできるようになります。 ファイル ハンドルは、Handle プロパティに含まれます。 Windows では、Handle プロパティは Windows のファイル ハンドルです。 Handle プロパティは読み取り専用で、ファイルが開いたときのモードを表します。 ファイル ハンドルの属性を変更する場合は、新しいファイル ストリーム オブジェクトを作成する必要があります。

ファイル操作ルーチンの中には、パラメータとしてファイル ハンドルをとるものもあります。 一度ファイル ストリームを得た後は、ファイル ハンドルを使用するような状況ではいつでも Handle プロパティを使用できます。 ファイル ストリームは、ハンドル ストリームとは違って、オブジェクトが破棄されたときにファイル ハンドルを閉じることに注意してください。

関連項目