OPEN

ページ名:OPEN
  • OPEN

Stream = OPEN FileName [ FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ] ]

データの読み取り、書き込み、作成、または追加のためにファイルを開きます。 ファイルが存在しているか、またはCREATEキーワードが使用されている必要があります。

  1. CREATEキーワードが指定されている場合は、ファイルが作成されるか、すでに存在する場合は消去されます。
  2. APPENDキーワードが指定されている場合は、ファイルが開かれた直後にファイルポインタがファイルの終わりに移動されます。
     
  3. READまたはWRITEキーワードが指定されていると、入力と出力はバッファーに入れられません。
  4. INPUTまたはOUTPUTキーワードが指定されていると、入力と出力はバッファーに入れられます。
  5. WATCHキーワードが指定されている場合、ファイルはselect(2)システムコールを介してインタプリタによって監視されます。
  6. ファイルから少なくとも1バイトを読み取ることができる場合は、イベントハンドラFile_Read()が呼び出されます。
  7. 少なくとも1バイトをファイルに書き込める場合は、イベントハンドラFile_Write()が呼び出されます。
  8. ファイルが正常に開かれると、ストリームオブジェクトが変数Streamに返されます。
デフォルトでは、ストリームはバッファリングされています。

バッファなしのストリームを作成したい場合は、READまたはWRITEキーワードを明示的に使用する必要があります。

 

他の基本的な方言とは異なり、GambasはWRITEキーワードで開かれたファイルの内容を削除することは決してありません。 そのため、新しいコンテンツが古いコンテンツよりも小さい場合、古いファイルバージョンのゴミが新しいファイルの末尾に残ることになります。 これを回避するには、CREATEキーワードを含むファイルを開きます。

 

Errors

Message Description
Access forbidden (43) ファイルへの要求されたアクセスが許可されていないか、pathnameのパス接頭部にあるディレクトリーの1つに対する検索許可が拒否されているか、ファイルがまだ存在せず、親ディレクトリーへの書き込みアクセスが許可されません。
File is a directory (46) FileNameはディレクトリを表します。 代わりに関数Dirを使ってください。
File or directory does not exist (45) FileNameが存在しないか、pathnameのディレクトリコンポーネントが存在しないか、またはダングリングシンボリックリンクです。
Out of memory (1) システムのメモリが不足しました。
Device is full (37) FileNameは作成されましたが、FileNameを含む装置に新しいファイル用のスペースがありません。
Not a directory (49) FileNameでディレクトリとして使用されるコンポーネントは、実際にはディレクトリではありません。
System error... (42)

その他の考えられるシステムエラー:

  • FileNameの解決中にシンボリックリンクが多すぎました。
  • プロセスはすでに最大数のファイルを開いています。
  • 開いているファイルの総数のシステム制限に達しました。
  • FileNameがデバイス特殊ファイルを参照しており、対応するデバイスが存在しません。
  • 名前付きファイルは名前付きパイプであり、ファイルを読み取り用にオープンしているプロセスはありません。
  • FileNameは読み取り専用ファイルシステム上のファイルを参照しており、書き込みアクセスが要求されました。
  • FileNameは、現在実行されていて書き込みアクセスが要求された実行可能イメージを参照しています。

 

Examples

'テキストファイルの内容を画面に表示します


Dim hFile As
File
Dim sLine As String

hFile = Open
"/etc/passwd" For Input

While Not
Eof(hFile)
Line Input #hFile, sLine
Print sLine
Wend

'シリアルポートを見ている

Dim hFile As File

hFile = Open "/dev/ttyS0" For Read Write Watch

...

Public Sub File_Read()

Dim iByte As
Byte

Read #hFile, iByte
Print
"Got one byte: "; iByte

End

'リトルエンディアン形式を使用することで知られている、BMPファイルからのデータの読み取り


Dim hFile As File
Dim iData As Integer

hFile = Open "image.bmp" For Input
hFile.ByteOrder = gb.LittleEndian
...
Read #hFile, iData

See also

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧