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 テクニック編資料