ファイル操作を使って、読み書きするために、ディスク・ファイルを開きます。
構文:
Open filename For Input [encoding_type] [lock_type] As [#]filenumber
Open filename For Output [encoding_type] [lock_type] As [#]filenumber
Open filename For Append [encoding_type] [lock_type] As [#]filenumber
Open filename For Binary [access_type] [lock_type] As [#]filenumber
Open filename For Random [access_type] [lock_type] As [#]filenumber [Len = record_length]
用法:
result = Open( filename[,] For {Input|Output|Append}[,] As filenumber )
または、
result = Open( filename[,] For Binary[,] Access {Read|Write}[,] As filenumber )
または、
result = Open( filename[,] For Random[,] Access {Read|Write}[,] As filenumber [[,] Len = record_length] )
または、
Open filename For {Input|Output|Append} As filenumber
または、
Open filename For Binary Access {Read|Write} As filenumber
または、
Open filename For Random Access {Read|Write} As filenumber [Len = record_length]
パラメタ:
filename
開くディスク・ファイルの、名前の文字列。
相対ファイル経路を使う場合は、現在のディレクトリが基準になります。(
Curdirを参考)。
encoding_type
テキストを読み書きするとき、使われる符号化の形式。以下のいずれかを使います。
- "ascii" でコード化 (ASCII コード化を使います。デフォルトです。)
- "utf8" でコード化 (8ビットのユニコード・コード化を使います。)
- "utf16" でコード化 (16ビットのユニコード・コード化を使います。)
- "utf32" でコード化 (32ビットのユニコード・コード化を使います。)
Encoding を参照下さい。
access_type
呼ぶ過程で要求する、アクセス形式。
- Access [Read] [Write] (読み書きの両方が使えます。どちらがデフォルトかを指定します。)
lock_type
ディスク・ファイルに、他の処理(スレッドやプログラム)からアクセスするときの制限を課します。下記のいずれかを使います。
- Shared (ファイルは、他の処理から自由ににアクセスできます。)
- Lock [Read] [Write] (読み書き両方について、他の処理からのアクセスを否定することができます。)
filenum
ディスク・ファイルに結びつける、有効なファイル番号。
Freefile で見つけることができます。
record_length
ディスクファイルに対して、読み書きする、各レコードの、バイト単位で表現されるサイズ。デフォルトは 128 です。
戻り値:
最初の使用法で、Open() は32ビットの Long 値を返します。成功するとゼロ (0) 、失敗するとゼロ以外のエラーコードが返されます。
記述:
読み/書きするために、ディスク・ファイルを開きます。
ファイル番号
file_num は、以降のファイル操作で使うために、ディスクの上のファイルに結び付けられます。
Input # や
Lockのように。
Freefile で、次の処理で使えるファイル番号を検索できます。
Input、
Output、
Append ファイル・モードは、順次処理で、テキスト・ファイルを、入出力するために開きます。
プレーン・テキスト・ファイルを読み書きするときに、役立ちます:
-
Input モードを指定すると、Line Input # や Get # のように、ファイル読み込み操作だけが使えるようになります。ディスク・ファイルが存在しないと、実行時エラーになります。
-
Append モードを指定すると、Print # や Put # のように、書込み操作だけが使われるようになります。このモードで、書込み操作は、存在するディスク・ファイルの終端部分で起こります。そして、既存のデータを保存します。
-
Output モードは Append モードに似ています。しかし、ファイルが存在すると、その内容は削除されて、書き込み前に、その長さはゼロにリセットされます。
Input,
Output,
Append モードでは、ディスク・ファイルで、テキストを読み書きするときに使う、文字符号化の方法を、選択できます。
ASCII と、ユニコード・コード化を指定することができます。(上記の、
encoding_typeパラメータの記述を参考下さい。)
Binary と
Random ファイル・モードは、任意の大きさの2進数データを、ランダムアクセスで、読み書きするために、ディスク・ファイルを、開きます:
-
Binary ファイルモードでは、Byte や Longint のように、単純なデータ型の値の読み書きを行うことができます。また、Get # のように、バイナリの読み書き操作を使うことができます。
Loc と Seek は、ディスクファイルの、任意の場所で読み書きするために使われる手続きです。
-
Random ファイルモードは、Binary と同様です。ただし、読み書きのとき、ファイル入出力操作が、常に定数データサイズを使うことが、違います。
Binary ファイルモードと
Random ファイルモードは、デフォルトでは、開いているディスク・ファイルに対して読み取りと書き込みの両方の操作が可能です。
しかし、アクセスタイプを指定することで変更できます(上記の
access_type パラメータの説明を参照)。
既存のファイルを、
Binary または
Random ファイルモードで開き、
Write アクセスタイプのみを指定した場合、ファイル内のすべてのデータは、他の操作の前に、開くときに前もって削除されます。
全てのファイル・モードで、lock 型を使って、他のスレッドやプログラムに対して、開かれたディスクファイルへのアクセスを、制限するか、承諾するかを、指定できます。(上記の
lock_type パラメータの記述を参照下さい。)
lock 型を指定しないと、現行プログラムの他のスレッドは、自由に、ディスクファイルを開くことができます(
Shared)。しかし、他のプログラムは、開くことができません(
Lock Read Write)。
Lock と
Unlock を使って、ファイルの部分に、一時的にアクセス制限をかけることができます。
Open で返されるエラーコードは、次の行で、
Err を使うことで、チェックできます。
Open 関数 は、直接、エラーコードを、32 bit
Longで返します。
例:
' 文字列変数を生成して文字列を登録します
Dim buffer As String, f As Integer
buffer = "Hello World within a file."
' 空いている、最初のファイル番号を見つけます
f = FreeFile
' 2進法を使ってファイル "file.ext" を開きます。ファイル番号は "f" を使います
Open "file.ext" For Binary As #f
If Err>0 Then Print "Error opening the file":End
' 数 "f" を使って文字列をファイルに入れます
Put #f, , buffer
' 開いている全てのファイルを閉じます
Close
' プログラムを終了します。(ファイル "file.ext" をチェックして、出力を見てください。)
End
'COMポートを開けます
Open Com "COM1:9600,N,8,1" As #1
If Err>0 Then Print "The port could not be opened."
'COM1, 9600 BAUD, NO PARITY BIT, EIGHT DATA BITS, ONE STOP BIT
'COM1、伝送の速度 9600 ボー、パリティビット無し、8データ・ビット、1つの停止ビット'
'関数としての OPEN の場合
If Open("file.ext" For Binary Access Read As #1) = 0 Then
Print "Successfully opened file"
'' ...
Close #1
Else
Print "Error opening file"
End If
プラットホーム差:
-
Linux は、filename の大文字小文字を含めて、ファイルの本当の名前に合致することを義務づけます。
Windows と DOS は、大文字と小文字を区別しません。
-
リナックスの経路分離符は / です。Windows は、後方スラッシュ \ を使いますが、前方スラッシュも許容します。DOS は、後方スラッシュ\を使います。
-
Windows では、ダイナミック・リンク・ライブラリで使われるファイル番号は、主プログラムで使われるそのファイルのファイル番号と、同じではありません。
ファイル番号を、渡したり、返したりできません。従って、DLLと実行ファイル間で、使えません。
-
Linux 上のディレクトリーを開こうとするなら、Open コマンドは成功するでしょう。
QBからの違い:
方言差:
- -lang qb 方言は、古い GW-BASIC-style 構文をサポートします。
OPEN mode_string, #filenumber, filename [length] で、mode_string として、"I" は input, "O" は output, "A" は append, "R" は random, "B" は binary です。
参照: