◆◇◆ Tips! ◆◇◆

ファイル操作のまとめ

[Japanese Pocket C User's Page]-[Tips!]


ファイル操作関数についてまとめてみました。
ここでは、あくまで、PocketCで使える関数のまとめです。
ここに書かれた内容について、簡単に目を通した上で、
実際にファイルの操作を行うときには、
別のところで紹介するfiletools.hというライブラリを使うのが、
効率的です。

1.概要

PocketCにてファイル操作を行う場合、気をつけなければならないことは次の点です。

1)ファイルハンドル

ファイルを操作するときに、直接ファイル名を指定できるものと、
ファイルハンドルを取得しなければならないものがあります。
基本的に、ファイルの内容について吟味するようなものは、
関数fileopenを利用して、ファイルハンドルを取得しなければなりません。
また、ファイルの使用が終了したときには、関数filecloseを使い、
ファイルをクローズする必要があります。

2)ファイルモード

PocketCではUnicodeを採用しています。
このため、ファイルにアクセスをするときは、
Windows98などで採用されているASCIIコードなのか、
Unicodeなのかを意識する必要があります。
現在のファイルの状態を知るためには関数filemodegetを使い、
明示的に設定するためには関数filemodesetを使います。

 

2.ディレクトリに対する操作

ディレクトリを引数に持つ関数として、つぎのようなものがあります。

・ディレクトリの作成 CreateDirectory(string Dirname)
・ディレクトリの削除 RemoveDirectory(string Dirname)
・ファイル数を数える fileenum(int first, string filename)
※fileenumを使うことにより、特定ディレクトリ内にあるファイル名を順次取得することが出来ます。

 

3.ファイル全体に対する操作

ファイル全体に対する操作を行う関数は次のとおりです。
大きく分けてファイルハンドルに関係のあるものと無いものに大別できます。

1)ファイルハンドル関係なし

・ファイルの削除 DeleteFile(string FileName)
・ファイルのコピー filecopy(string ExistingFilePath,string NewFilePath,int bFailIfExists)
・ファイルの移動 filemove(string ExistingFilePath,string NewFilePath)
・ファイル名の変更 MoveFile(string NewFileName,string ExistingFileName)
・ファイルの属性を取得 GetFileAttr(string filepath)

2)ファイルハンドル関係あり

・ファイルをオープンする fileopen(string filepath, int type, int flag)
・ファイルをクローズする fileclose(int filehandle)
・ファイルモードを取得する filemodeget(int filehandle)
・ファイルモードを設定 filemodeset(int filehandle, int filetype)
※モード…ASCII or Unicode

ここまでの関数を使いこなせば、ファイラーもどきは作れそうですね。

 

4.ファイルポインタに対する操作

ファイルの内容について実際に参照、書き込みをするためには、
ファイルの中のどの部分かを示すファイルポインタを操作します。

ファイルポインタを移動する fileseek(int filehandle,int offset,int from)
ファイルポインタを最後に移動する fileseekend(int filehandle)
ファイルポインタの現在値を取得 filepos(int filehandle)

 

5.ファイルの中のデータを読み書きする

ファイルポインタにより示されたファイル上の場所のデータを読み書きするときは、
データ型に注意してください。

データ型 read write 解説
int readint(int handle) writeint(int handle, int v) 4バイトの整数
char readchar(int handle) writechar(int handle, int v) 2バイトのchar
byte readbyte(int handle) writebyte(int handle,int v) 1バイトのデータ
bytes   writebytes(int handle, string s) 各文字1バイトの文字列
chars   writechars(int handle, string s) 各文字2バイトの文字列
特定バイト数 fileread(int filehandle,int counter) filewrite(int filehandle,string data,int counter) counterで指定した
バイト長の文字列。

 

6.その他

ふーん、こういった関数があるんだってことが、分かったら、
次のfiletoolsというライブラリの使い方を見に行きましょう。


[Japanese Pocket C User's Page]-[Tips!]