SAK 図書館
VB 基礎編 (その四) 標準ファイル I/O open、eof、print、curdir、name、kill
VB の標準ファイル I/O について説明します。 ■open (ファイルオープン) open パスファイル名 for モード as #ファイル len=バッファ | | | |_ シーケンシャルアク | | | セスのとき、32000 | | | を指定すると高速ア | | | クセスできる。 | | | 但し、関数内で合計 | | | 65000 程度のバッフ | | | ァしか確保できない。 | | | ランダムファイルで | | | は、レコード長を指 | | | 定する。 | | |_ ファイルとファイルb結びつける。 | | 入出力命令は、このbノ対して行う。 | |_ input シーケンシャル入力 | output シーケンシャル出力 | append シーケンシャル追加出力 | random ランダム入出力 | binary バイナリアクセス |_ 対象パス、ファイル名 ■close (ファイルクローズ) close [#ファイル] |_ 省略するとオープン中のファイルが全てクローズされる。 尚、close 命令が実行されるまでにプログラムがクラッシュした 場合は、そのファイルが HDD 破壊クラスタとなる。 ■freefile (空きファイル番号取得) 標準ファイル I/O で使用するファイルハンドルの空いているハンドル番号を 返します。 dim fno as integer fno = freefile ■input (シーケンシャルレコード読み込み) [line] input #ファイル番号, 変数 [, 変数] line input は、改行コードまでを 1 レコードして読み込む。 input は、tab、カンマ、改行をデータ区切りとして読み込む。 ■eof (シーケンシャルレコード AT END) eof(ファイル番号) が真になると、それ以上のレコードはない。 ■lof (ファイルサイズ) lof(ファイル番号) は、主にバイナリ I/O で使用する。 ■print (シーケンシャルレコード書き込み) print #ファイル番号, 変数 [, 変数] [;] カンマで区切ると、実ファイルに適当な空白が挿入される。 現実には、ファイル効率から自分で「,」なり必要な区切りを入れる。 最後に「;」を記述すると、改行コードが挿入されない。 【例】dim rec as string open "g:\tmp\test1.sf" for input as #1 len = 32000 open "g:\tmp\test2.sf" for output as #2 len = 32000 do until eof(1) line input #1, rec print #2, rec loop close #2 close #1 【ヒント】ファイルbノ定数宣言などを使用するとわかり易いです。 const TEST1_SF = 1 dim rec as string open "g:\tmp\test1.sf" for input as TEST1_SF len = 32000 do until eof(TEST1_SF) line input #TEST1_SF, rec loop close TEST1_SF ■get、put、seek (バイナリ入出力) ランダム、バイナリアクセスは通常使用しないので、パスする。 VB5 以上では、バイナリアクセスの場合に byte 変数を使用しないと、 バイト切り出しがうまく出来ません。 ■CurDir (カレントディレクトリ取得) カレントディレクトリ(カレントフォルダ) を取得するには、次のようにする。 dim s as string s = curdir ■ChDrive (ドライブ変更) ドライブを変更するには、次のようにする。 chdrive d: ■ChDir (ディレクトリ変更) ディレクトリを変更するには、次のようにする。 chdir "\tmp" ■MkDir (ディレクトリ作成) ディレクトリを作成するには、次のようにする。 mkdir "\tmp" ■RmDir (ディレクトリ削除) ディレクトリを削除するには、次のようにする。 rmdir "\tmp" ■Name (ディレクトリ名、ファイル名変更) ディレクトリ名やファイル名を変更するには、次のようにする。 name "旧名" as "新名" ■Kill (ファイル削除) ファイルを削除するには、次のようにする。 kill "g:\tmp\test.txt" ■GetAttr (ファイル属性取得、フォルダ属性取得、ディレクトリ属性取得) ファイル属性を取得するには、次のようにする。 rcd = getattr(filename) | |_ パス、または、パス付きファイル名 |_ 0 vbNormal 通常ファイル 1 vbReadOnly 読み取り専用ファイル 2 vbHidden 隠しファイル 4 vbSystem システムファイル 16 vbDirectory フォルダ 32 vbArchive アーカイブ ■SetAttr (ファイル属性設定、フォルダ属性設定、ディレクトリ属性設定) ファイル属性を設定するには、次のようにする。 setattr filename, atr | |_ 0 vbNormal 通常ファイル | 1 vbReadOnly 読み取り専用ファイル | 2 vbHidden 隠しファイル | 4 vbSystem システムファイル | 32 vbArchive アーカイブ |_ パス、または、パス付きファイル名 SetAttr filename, GetAttr(filename) and &HDF&) とすれば、 アーカイブ属性(vbArchive 32) がマスクされて、解除できます。 ■FileCopy (ファイルコピー) filecopy "g:\tmp\a.xls", "g:\tmp\b.xls" ■FileLen (ファイルサイズ) sz = filelen("g:\tmp\test.txt") ■FileDateTime (ファイル日付) dt = FileDateTime("g:\tmp\test.txt") ■VB 基礎編資料
■VB 入門編資料
■VB ビジュアル編資料
■VB テクニック編資料