vb6 讀寫文件


'---------------------------------
'write file
    Dim nHandle As Integer, fName As String
    fName = "d:\1.txt"
    nHandle = FreeFile
    Open fName For Output As #nHandle
    Print #nHandle, "0"
    Print #nHandle, "2"
    Close nHandle
'----------------------------------
'read file
    nHandle = FreeFile
    Open fName For Input As #nHandle
    cnt = 0
    Do Until EOF(nHandle)
        Line Input #nHandle, NewLine
        Debug.Print NewLine
    Loop
    Close nHandle

 

----------------------------------------------------------------

 

 

    總結一下VB6的文件操作,省得要用的時候又到處查找。

 

一、文件類型

1、順序文件(文本文件) :以ASCII碼形式存放的文件。似乎還有Unicode碼存放的,有沒有BCD碼的呢?

2、隨機訪問文件:這種文件格式很有特點:文件中存放若干條等長的單元(也可以說是記錄);每個單元包含同類型、等數量、等長度的數據項;文件中,除了字符串以ASCII碼存放之外, 其它都以二進制形式直接存放,節省存儲空間。這種文件類型非常適合存儲需要和軟件交互的數據,如結構體數據、類數據等。這也是VB特有的文件訪問方式。

3、二進制文件:以二進制形式存放,PE程序文件一般都是這個類型。

二、操作方法

1、順序文件

打開: Open 文件名 For Input | Output | Append As [#]文件號   

         Input打開讀入,文件不存在報錯。Output打開覆蓋寫入,文件不存在則創建。Append打開追加寫入,文件不存在則創建。  

讀: Line Input #文件號, 字符串變量

        讀一行數據存入字符串變量,數據包括空格、Tab、等,不包括回車符和換行符,所以要顯示文件的換行效果,要手動添加回車符和換行符(vbCrLf)

        Input #文件號, 變量1[, | ;] [變量2]...

        這種方式可以存入多個變量,而且變量類型不限於字符串型。

寫: Print #文件號, 參數1[, | ;] [參數2]...

        將各參數逐個寫入文件。參數間用逗號隔開時,文件中相應插入多個空格;用分號隔開時,插入一個空格。可以用Spc(n)、Tab(n)等進行排版。

        Write #文件號, 參數1[, | ;] [參數2]...

        這種寫入方式將自動添加界定符,對不同參數的類型加以界定。

2、隨機訪問文件

打開: Open 文件名 [For Random] As [#]文件號 Len = 記錄長度

         For Random可以省略,文件不存在則創建,讀寫都是這種打開方式。   Len是文件中記錄的一條長度,用以識別記錄的開始與結束,經常用Len(記錄名)來獲取長度。

讀: Get [#]文件號, [記錄號], 變量

        讀一條記錄存入變量,可以是系統類型的Integer、Single、String等等,也可以是自定義類型結構體、類等。記錄號省略時從打開以后最后一次讀取的末端開始讀取記錄。

寫: Put [#]文件號, [記錄號], 表達式

        將表達式中的數據寫入文件,表達式可以是各種變量的組合,中間用逗號隔開。該組數據寫入記錄號對應的位置,記錄號省略時從打開以后最后一次寫入的末端開始寫入記錄。

3、二進制文件

打開: Open 文件名 For Binary As [#]文件號

         文件不存在則創建,讀寫都是這種打開方式。當然也可以用來打開文本文件,讀出來將不知所雲

        讀一條記錄存入變量,可以是系統類型的Integer、Single、String等等,也可以是自定義類型結構體、類等。記錄號省略時從打開以后最后一次讀取的末端開始讀取記錄。

讀: Get [#]文件號, [讀位置], 變量

         從“讀位置”開始讀取數據,讀入的長度等於變量的長度,一次讀一個。“讀位置”以字節為單位。“讀位置”省略時從打開以后最后一次寫入的末端開始讀入。

寫: Put [#]文件號, [寫位置], 表達式

        將表達式中的數據寫入文件,表達式可以是各種變量的組合,中間用逗號隔開。該組數據寫入“寫位置”,“寫位置”以字節為單位。“寫位置”省略時從打開以后最后一次寫入的末端開始寫入。

三、操作權限

        使用Input、Binary、Random模式訪問,可以同時對單個文件打開多個實例。使用Append和Output模式之前則必須確定文件

        Open 文件名 For 模式 [Access access] [lock ] As [#]文件號 [len = 記錄長度]

        對隨機存儲文件和二進制文件,可以設置文件的讀寫權限。access可寫成Read、Write、 Read Write,對應只讀、只寫、讀寫兼備。此項功能不適用於順序文件。

         Lock | Unlock 文件號, [記錄| [起始記錄 To終止記錄]]

        當指明lock標識后,可用以上代碼設置文件的共享權限。對順序文件, [記錄| [起始記錄 To終止記錄]]不起作用,將對整個文件生效;對隨機存儲文件,將對記錄標識中的部分進行權限鎖定或解鎖。

四、文件操作函數

        以上部分可以實現文件操作的一些功能,但要完成如拷貝整個文件、查找文件是否已建立、取文件長度等功能,還需要一些文件操作函數來方便地實現。

Seek: Seek(文件號)

        返回文件正在訪問的位置,返回值為長整型。對順序文件和二進制文件,返回值以字節為單位;對隨機訪問文件,返回值以記錄號為單位。

Seek: Seek [#]文件號,位置

        定位文件到指定位置。位置單位同上所述。

Input: Input (字節數,[#]文件號)

        從文件的訪問當前位置讀入指定字節數的數據。僅適用於順序文件和二進制文件。

EOF: EOF(文件號)

        判斷文件的訪問位置是否在文件尾,如果是,返回True,否則,返回False。

LOF: LOF(文件號)

        返回文件長度,單位為字節。

FileLen: FileLen (文件名)

        返回文件名對應文件的長度,單位是字節。該函數取磁盤文件標識中的長度,即文件打開前的長度,可以取未打開的文件長度。

GetAttr: GetAttr (Pathname)

        返回指定文件或文件夾的屬性。

FileAttr: FileAttr (文件號)

        返回文件號對應文件的打開方式。

GetDateTime: GetDateTime (Pathname)

        返回文件被創建或修改的最后日期和時間。

Free: FreeFile[(0|1)]

        返回未被占用的文件號,Free或Free(0)返回1~255之間未占用的文件號,Free(1)返回256~511之間未占用的文件。

Dir: Dir (Pathname [,Attributes])

        測試指定路徑是否有某文件,Attributes附加文件屬性條件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。

Kill: Kill (文件名)

        刪除指定文件,文件名可包含路徑。

FileCopy: FileCopy 源文件,目標文件

        拷貝文件。

Name: Name 舊文件名 As 新文件名

        文件重命名。前后路徑不一致時,操作為移動文件並重命名。

MkDir: MkDir path

        新建文件夾。

RmDir: Rmdir path

        刪除文件夾。

ChDrive: ChDrive Drive

        改變當前驅動器 ChDrive "D"

CurDir: CurDir [(driver)] 

      返回當前工作路徑,指定driver則返回目標驅動器的當前工作路徑。

五、文件操作實戰

1、新建文本文件a.txt,寫入數據,關閉。打開該文件,全部讀入到新建文件b.txt,關閉。

'新建文件,並寫入數據,關閉
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1

'打開文件,並全部寫入新文件,關閉
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
    Line Input #2, str
    Print #3, str
Wend
Close

2、新建隨機存儲文件a.dat,寫入數據,關閉。打開該文件,讀入到新建文件b.dat,關閉。

'以下代碼位於Module模塊
'定義自定義類型結構體
Public Type Struct
    elem1 As Integer
    elem2 As String * 5
End Type

'以下代碼位於窗體模塊
'新建文件,並寫入記錄,關閉
Open "a.dat" For Random As #1 Len = Len(st)
Put #1, , st
Close #1
'打開文件,並寫入新文件,關閉
Open "a.dat" For Random As #2 Len = Len(st)
Open "b.dat" For Random As #3 Len = Len(st)
Dim st2 As Struct
Get #2, , st2
Put #3, , st2
Close

3、二進制文件操作類似於隨機存儲文件,不再舉例。

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM