FileHandle
FileHandle
クラスは、開かれた File
オブジェクトから内容を順次読み出したり、追加したりするための関数を備えています。 FileHandle は、ドキュメントのどの部分にもアクセスすることができます。
FileHandle
オブジェクトは file.open()
関数によって作成されます。
ドキュメント全体を一括で読み書きするには、file.getText() と file.setText() 関数の使用を検討されるとよいでしょう。
標準的な 4Dオブジェクトの 参照カウント により、FileHandle は参照されなくなると自動的に削除され、要求された File
オブジェクトも自動的に閉じられます。 つまり、FileHandle を使えば、ドキュメントを閉じる必要がなくなります。
注
ドキュメントなどのオブジェクトリソースは、メモリ上で参照がなくなると解放されます。これはたとえば、メソッド実行終了時のローカル変数などで起こります。 任意の時点でオブ ジェクトリソースを "強制的に" 解放したい場合は、その参照を無効化 することができます。
例題
var $f : 4D.File
var $fhandle : 4D.FileHandle
$f:=Folder(Database folder).file("example.txt")
// 先頭から 1行ずつ書き込みます
$fhandle:=$f.open("write")
$text:="Hello World"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
// 終端から 1行ずつ追加で書き込みます
$fhandle:=$f.open("append")
$text:="Hello New World!"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
// オブジェクト引数を使い、読み取り停止文字を指定して読み取ります
$o:=New object()
$o.mode:="read"
$o.charset:="UTF-8"
$o.breakModeRead:=Document with CRLF
$stopChar:="!"
$fhandle:=$f.open($o)
$text:=$fhandle.readText($stopChar)
// 1行ずつ読み取ります
$lines:=New collection
$fhandle:=$f.open("read")
While (Not($fhandle.eof))
$lines.push($fhandle.readLine())
End while
FileHandle オブジェクト
FileHandle オブジェクトは共有できません。
.breakModeRead : Text ファイル読み取り時に使用される改行の処理モードを返します |
.breakModeWrite : Text ファイル書き込み時に使用される改行の処理モードを返します |
.charset : Text ファイルの読み取りや書き込みに使用される文字セットを返します |
.eof : Booleanoffset がファイルの終端に達した場合に true、それ以外は false を返します |
.file : 4D.File 作成された FileHandle の対象である 4D.File オブジェクトを格納します |
.getSize() : Real ドキュメントの現在のサイズをバイト単位で返します |
.mode : Text FileHandle が作成されたモード ("read"、"write"、"append" のいずれか) を返します |
.offset : Real データストリームの現在のオフセット (ドキュメント内の位置) を返します |
[.readBlob( bytes : Real ) : 4D.Blob ](#readblob) ファイルの現在の位置から bytes サイズの Blob を返します |
.readLine() : Text 現在の位置から次の改行文字まで、あるいはドキュメン トの終端に到達するまでのテキストを返します |
.readText( { stopChar : Text } ) : Text 現在の位置から、最初の stopChar 文字列まで (渡された場合)、あるいはファイルの終端に達するまでのテキストを返します |
.setSize( size : Real ) ドキュメントの新しいサイズをバイト単位で設定します |
.writeBlob( blob : 4D.Blob ) ファイルの現在の位置から blob に渡した Blob を書き込みます |
.writeLine( lineOfText : Text ) 現在の位置に lineOfText の内容を書き込み、改行文字を挿入します |
.writeText( textToWrite : Text ) 現在の位置に textToWrite の内容を書き込み、改行文字は挿入しません |
.breakModeRead
履歴
リリース | 内容 |
---|---|
19 R7 | 追加 |
.breakModeRead : Text