バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWFile

形式

#include <rw/rwfile.h>
RWFile f("filename");

説明

このクラスは、標準の C ストリームライブラリ (fopen()fread()fwrite() など) を使用してバイナリのファイル操作をカプセル化します。Interviews Class Library (1987 年スタンフォード大学) のクラス PFile にもとづいています。クラス PFile との互換性を保持するため、メンバー関数名は大文字で始めます。

このクラスはバイナリの操作をカプセル化するために作成されたものであるため、バイナリモードでオープンしてください。これは MS-DOS では特に重要で、バイナリモードでないと、改行符号に相当するバイトが復帰符号と改行符号に変換されてしまいます。

持続性

なし

公開コンストラクタ

RWFile(const char* filename, const char* mode = 0);

ファイル名 filename、モードが modeRWFile を作成します。モードは標準 C ライブラリ関数の fopen() から与えられます。mode がゼロ (デフォルト) の場合、コンストラクタは指定された filename の既存のファイルを更新用にオープンします (モードは "rb+")。オープンできない場合は指定された filename で新しいファイルを作成します (モードは "wb+")。この結果のオブジェクトを、関数 isValid() で、妥当かどうか検査してください。

~RWFile();

未完了の入出力操作をすべて実行し、ファイルをクローズします。

公開メンバー関数

const char*
Access();

FILE* がオープンされているアクセスモードを返します。

void
ClearErr();

エラー状態をリセットし、Eof()Error()TRUE を返さないようにします。C ライブラリ関数 clearerr() を呼び出します。

RWoffset
CurOffset();

ファイルポインタの現在の位置を、ファイルの先頭からのバイト数で返します。

RWBoolean
Eof();

ファイルの最後に達したら TRUE を返します。

RWBoolean
Erase();

ファイルの内容を消去しますが、ファイルをクローズしません。操作が成功した場合に TRUE を返します。

RWBoolean
Error();

C ライブラリ関数 ferror() の呼び出しにより決定されるように、入出力エラーが発生したら TRUE を返します。

RWBoolean
Exists();

ファイルが存在すれば TRUE を返します。

RWBoolean
Flush();

未完了の入出力操作をすべて実行します。操作が成功したら TRUE を返します。

const char*
GetName();

ファイル名を返します。

FILE*
GetStream();

RWFile インタフェースの下にある FILE* を返します。システムに依存する照会などで「軒の下に入る」必要があるユーザー用に提供されます。ファイルの状態を変更する目的には使用しないでください。

RWBoolean
IsEmpty();

ファイル内にデータがなければ TRUE を、あれば FALSE を返します。

RWBoolean
isValid() const;

ファイルのオープンに成功していると TRUE を、失敗していると FALSE を返します。

RWBoolean
Read(char& c);
RWBoolean
Read(wchar_t& wc);
RWBoolean
Read(short& i);
RWBoolean
Read(int& i);
RWBoolean
Read(long& i);
RWBoolean
Read(unsigned char& c);
RWBoolean
Read(unsigned short& i);
RWBoolean
Read(unsigned int& i);
RWBoolean
Read(unsigned long& i);
RWBoolean
Read(float& f);
RWBoolean
Read(double& d);

指定したそれぞれの組み込み型を読み取り、成功すれば TRUE を返します。

RWBoolean
Read(char* i,          size_t count);
RWBoolean
Read(wchar_t* i,       size_t count);
RWBoolean
Read(short* i,         size_t count);
RWBoolean
Read(int* i,           size_t count);
RWBoolean
Read(long* i,          size_t count);
RWBoolean
Read(unsigned char* i, size_t count);
RWBoolean
Read(unsigned short* i,size_t count);
RWBoolean
Read(unsigned int* i,  size_t count);
RWBoolean
Read(unsigned long* i, size_t count);
RWBoolean
Read(float* i,         size_t count);
RWBoolean
Read(double* i,        size_t count);

指定したそれぞれの組み込み型のインスタンスを count 個、i が指すブロックに読み込みます。それが成功すれば TRUE を返します。この関数を呼び出す前に、ユーザーが i を宣言して必要な記憶領域を割り当てる必要があります。

RWBoolean
Read(char* string);

終端ヌル文字を含めて文字列を string が指すブロックに読み取り、成功すると TRUE を返します。この関数を呼び出す前に、ユーザーが string を宣言し必要な記憶領域を割り当てる必要があります。この関数を使用するときには、オーバーフローに注意してください。

RWBoolean
SeekTo(RWoffset offset)

ファイルポインタをファイルの先頭から offset バイトの所に位置付けます。操作が成功したら TRUE を返します。

RWBoolean
SeekToBegin();

ファイルポインタをファイルの先頭に位置付けます。操作が成功したら TRUE を返します。

RWBoolean
SeekToEnd();

ファイルポインタをファイルの最後に位置付けます。操作が成功したら TRUE を返します。

RWBoolean
Write(char i);
RWBoolean
Write(wchar_t i);
RWBoolean
Write(short i);
RWBoolean
Write(int i);
RWBoolean
Write(long i);
RWBoolean
Write(unsigned char i);
RWBoolean
Write(unsigned short i);
RWBoolean
Write(unsigned int i);
RWBoolean
Write(unsigned long i);
RWBoolean
Write(float f);
RWBoolean
Write(double d);

指定した基本型を書き込み、成功すると TRUE を返します。

RWBoolean
Write(const char* i,          size_t count);
RWBoolean
Write(const wchar_t* i,       size_t count);
RWBoolean
Write(const short* i,         size_t count);
RWBoolean
Write(const int* i,           size_t count);
RWBoolean
Write(const long* i,          size_t count);
RWBoolean
Write(const unsigned char* i, size_t count);
RWBoolean
Write(const unsigned short* i,size_t count);
RWBoolean
Write(const unsigned int* i,  size_t count);
RWBoolean
Write(const unsigned long* i, size_t count);
RWBoolean
Write(const float* i,         size_t count);
RWBoolean
Write(const double* i,        size_t count);

i が指すブロックから、指定したそれぞれの基本型のインスタンスを count 個、書き込みます。それが成功したら TRUE を返します。

RWBoolean
Write(const char* string);

string が指すブロックから、終端ヌル文字を含めて文字列を書き込みます。それが成功すれば TRUE を返します。この関数を使用するときは、終端のヌル文字がない文字列に注意してください。

静的公開メンバー関数

static RWBoolean
Exists(const char* filename, int mode = F_OK);

filename という名前のファイルが存在し、指定した mode に従ってアクセスできれば、TRUE を返します。mode は次の内の 1 つ以上からビット毎の論理和演算を行った結果になります。

F_OK: 存在する (他のモードに含まれる)

X_OK: 実行可能あるいは検索可能

W_OK: 書き込み可能

R_OK: 読み取り可能

コンパイラまたはオペレーティングシステムが POSIX access() 関数をサポートしない場合、モード X_OK は常に FALSE を返します。