1、Sequential files
一般是文本文件,存儲字符、ASCII控制字符。
【打開】
Open fileName [For {Input | Output | Append} ] As fileNumber [Len = bufferSize] [Charset = MIMECharsetName]
【寫入】
Var1 = "123"
Var2 = 123
Print #idFile, Var1, Var2
將Var1和Var2的內容寫入序號爲idFile的文件中。Var1和Var2間將以tab間隔。文件內容:123
123
Write #idFile, "Testing", 123
作用同上,但是寫入後,字符串兩邊將加入引號。Var1和Var2間將以逗號間隔。文件內容:"123",123
Note True, False, and NULL are stored as strings “#True#”, “#False#”, and “#NULL#”.
【讀取】
Line Input # 讀取一行
Do Until EOF(idFile)
Line Input #idFile, iLine
Print iLine
Loop
Input # 讀取使用Write #方法寫入的數據
Input #idFile, Var1, Var2 '可將文件內容讀入Var1和Var2變量中。
Input 讀取整個文件內容。Input返回Variant,Input$返回字符串。
' LOF returns the length of the file in characters.
Dim fulFile As String
fulFile = Input$(LOF(idFile), idFile)
2、Random files
存儲長度相同的記錄。記錄可以爲 Integer or String, or to a user-defined type。
【打開】
Open fileName For Random As fileNumber [Len = recordLength]
where recordLength is the length of each record in the file. The default length is 128 bytes.
Dim recLen As Integer, idFile As Integer
Dim recHold As emploRec
idFile = 1 ' The file number to use for
' this file
recLen = Len(recHold) ' The record length for this file
Open "DATA.DAT" For Random As idFile Len = recLen
【寫入】
Put 新增或替換文件內記錄。使用已有記錄序號時爲替換,使用任何大於已有序號時爲新增。
Dim recNum As Integer
recNum = 5
' Replace record 5 with the contents of recHold.
Put idFile, recNum, recHold
【讀取】
Get 將指定文件中指定序號的記錄讀取如指定變量中。
' The record number to retrieve from the file
Dim recNum As Integer
recNum = 5
' The variable to read into
Dim recHold As emploRec
Get idFile, recNum, recHold
3、Binary files
二進制文件。
【打開】
Open fileName For Binary As fileNumber
【寫入】
Put fileNumber, bytePosition, variableName
bytePosition 文件中開始寫入的位置。文件中第一byte對應的是position 1。
【讀取】
Get fileNumber, bytePosition, variableName 與Put對應
Dim tempRec As emploRec
For I = recNum To lastRec - 1
Get idFile, I + 1, tempRec
Put idFile, I, tempRec
Next I
Seek [#] fileNumber, position 設置文件位置(Binary file中的字節位置或者Random file中的記錄位置)。
Type personRecord
empNumber As Integer
empName As String * 20
End Type
Dim rec1 As personRecord, rec2 As personRecord
Dim fileNum As Integer, recNum As Integer
Dim fileName As String
fileNum% = FreeFile()
fileName$ = "data.txt"
recNum% = 5
Open fileName$ For Random As fileNum% Len = Len(rec1)
rec1.empNumber% = 123
rec1.empName$ = "John Smith"
Print Seek(fileNum%)
' Prints 1 for current position
Put #fileNum%, recNum%, rec1 ' Write data at record 5
Print Seek(fileNum%)
' Prints 6
Seek fileNum%, 1
' Rewind to record 1
Print Seek(fileNum%)
' Prints 1
Rec2.empNumber% = 456
Rec2.empName$ = "Jane Doe"
Put #fileNum%, , rec2
' Write at current position
Print Seek(fileNum%)
' Prints 2
Close fileNum%
dataHold = Input (numBytes, fileNumber) 從文件中讀取numBytes字節數據至dataHold變量。若使用Input$,則返回值爲String。
【總結】
【打開】
fileNumber% = FreeFile
Open fileName$ [ For {Input | Output | Append | Binary | Random }]
[ Access {Read | Read Write | Write}]
[ {Shared | Lock Read | Lock Read Write | Lock Write }]]
As fileNumber%
[ Len = recLen%]
[Charset = MIMECharsetName]
【關閉】
Close [ [ # ] fileNumber [ , [ # ] fileNumber ] ... ]
文件使用後必須關閉,否則不能被再次打開。改變文件打開屬性(只讀|可寫)必須重新打開文件。