總結(jié)一下VB6的文件操作,省得要用的時(shí)候又到處查找。 一、文件類型 1、順序文件(文本文件) :以ASCII碼形式存放的文件。似乎還有Unicode碼存放的,有沒有BCD碼的呢? 2、隨機(jī)訪問文件:這種文件格式很有特點(diǎn):文件中存放若干條等長(zhǎng)的單元(也可以說是記錄);每個(gè)單元包含同類型、等數(shù)量、等長(zhǎng)度的數(shù)據(jù)項(xiàng);文件中,除了字符串以ASCII碼存放之外, 其它都以二進(jìn)制形式直接存放,節(jié)省存儲(chǔ)空間。這種文件類型非常適合存儲(chǔ)需要和軟件交互的數(shù)據(jù),如結(jié)構(gòu)體數(shù)據(jù)、類數(shù)據(jù)等。這也是VB特有的文件訪問方式。 3、二進(jìn)制文件:以二進(jìn)制形式存放,PE程序文件一般都是這個(gè)類型。 二、操作方法 1、順序文件 打開: Open 文件名 For Input | Output | Append As [#]文件號(hào) Input打開讀入,文件不存在報(bào)錯(cuò)。Output打開覆蓋寫入,文件不存在則創(chuàng)建。Append打開追加寫入,文件不存在則創(chuàng)建。 讀: Line Input #文件號(hào), 字符串變量 讀一行數(shù)據(jù)存入字符串變量,數(shù)據(jù)包括空格、Tab、等,不包括回車符和換行符,所以要顯示文件的換行效果,要手動(dòng)添加回車符和換行符(vbCrLf) Input #文件號(hào), 變量1[, | ;] [變量2]... 這種方式可以存入多個(gè)變量,而且變量類型不限于字符串型。 寫: Print #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]... 將各參數(shù)逐個(gè)寫入文件。參數(shù)間用逗號(hào)隔開時(shí),文件中相應(yīng)插入多個(gè)空格;用分號(hào)隔開時(shí),插入一個(gè)空格??梢杂肧pc(n)、Tab(n)等進(jìn)行排版。 Write #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]... 這種寫入方式將自動(dòng)添加界定符,對(duì)不同參數(shù)的類型加以界定。 2、隨機(jī)訪問文件 打開: Open 文件名 [For Random] As [#]文件號(hào) Len = 記錄長(zhǎng)度 For Random可以省略,文件不存在則創(chuàng)建,讀寫都是這種打開方式。 Len是文件中記錄的一條長(zhǎng)度,用以識(shí)別記錄的開始與結(jié)束,經(jīng)常用Len(記錄名)來獲取長(zhǎng)度。 讀: Get [#]文件號(hào), [記錄號(hào)], 變量 讀一條記錄存入變量,可以是系統(tǒng)類型的Integer、Single、String等等,也可以是自定義類型結(jié)構(gòu)體、類等。記錄號(hào)省略時(shí)從打開以后最后一次讀取的末端開始讀取記錄。 寫: Put [#]文件號(hào), [記錄號(hào)], 表達(dá)式 將表達(dá)式中的數(shù)據(jù)寫入文件,表達(dá)式可以是各種變量的組合,中間用逗號(hào)隔開。該組數(shù)據(jù)寫入記錄號(hào)對(duì)應(yīng)的位置,記錄號(hào)省略時(shí)從打開以后最后一次寫入的末端開始寫入記錄。 3、二進(jìn)制文件 打開: Open 文件名 For Binary As [#]文件號(hào) 文件不存在則創(chuàng)建,讀寫都是這種打開方式。當(dāng)然也可以用來打開文本文件,讀出來將不知所云 讀一條記錄存入變量,可以是系統(tǒng)類型的Integer、Single、String等等,也可以是自定義類型結(jié)構(gòu)體、類等。記錄號(hào)省略時(shí)從打開以后最后一次讀取的末端開始讀取記錄。 讀: Get [#]文件號(hào), [讀位置], 變量 從“讀位置”開始讀取數(shù)據(jù),讀入的長(zhǎng)度等于變量的長(zhǎng)度,一次讀一個(gè)?!白x位置”以字節(jié)為單位?!白x位置”省略時(shí)從打開以后最后一次寫入的末端開始讀入。 寫: Put [#]文件號(hào), [寫位置], 表達(dá)式 將表達(dá)式中的數(shù)據(jù)寫入文件,表達(dá)式可以是各種變量的組合,中間用逗號(hào)隔開。該組數(shù)據(jù)寫入“寫位置”,“寫位置”以字節(jié)為單位?!皩懳恢谩笔÷詴r(shí)從打開以后最后一次寫入的末端開始寫入。 三、操作權(quán)限 使用Input、Binary、Random模式訪問,可以同時(shí)對(duì)單個(gè)文件打開多個(gè)實(shí)例。使用Append和Output模式之前則必須確定文件 Open 文件名 For 模式 [Access access] [lock ] As [#]文件號(hào) [len = 記錄長(zhǎng)度] 對(duì)隨機(jī)存儲(chǔ)文件和二進(jìn)制文件,可以設(shè)置文件的讀寫權(quán)限。access可寫成Read、Write、 Read Write,對(duì)應(yīng)只讀、只寫、讀寫兼?zhèn)洹4隧?xiàng)功能不適用于順序文件。 Lock | Unlock 文件號(hào), [記錄| [起始記錄 To終止記錄]] 當(dāng)指明lock標(biāo)識(shí)后,可用以上代碼設(shè)置文件的共享權(quán)限。對(duì)順序文件, [記錄| [起始記錄 To終止記錄]]不起作用,將對(duì)整個(gè)文件生效;對(duì)隨機(jī)存儲(chǔ)文件,將對(duì)記錄標(biāo)識(shí)中的部分進(jìn)行權(quán)限鎖定或解鎖。 四、文件操作函數(shù) 以上部分可以實(shí)現(xiàn)文件操作的一些功能,但要完成如拷貝整個(gè)文件、查找文件是否已建立、取文件長(zhǎng)度等功能,還需要一些文件操作函數(shù)來方便地實(shí)現(xiàn)。 Seek: Seek(文件號(hào)) 返回文件正在訪問的位置,返回值為長(zhǎng)整型。對(duì)順序文件和二進(jìn)制文件,返回值以字節(jié)為單位;對(duì)隨機(jī)訪問文件,返回值以記錄號(hào)為單位。 Seek: Seek [#]文件號(hào),位置 定位文件到指定位置。位置單位同上所述。 Input: Input (字節(jié)數(shù),[#]文件號(hào)) 從文件的訪問當(dāng)前位置讀入指定字節(jié)數(shù)的數(shù)據(jù)。僅適用于順序文件和二進(jìn)制文件。 EOF: EOF(文件號(hào)) 判斷文件的訪問位置是否在文件尾,如果是,返回True,否則,返回False。 LOF: LOF(文件號(hào)) 返回文件長(zhǎng)度,單位為字節(jié)。 FileLen: FileLen (文件名) 返回文件名對(duì)應(yīng)文件的長(zhǎng)度,單位是字節(jié)。該函數(shù)取磁盤文件標(biāo)識(shí)中的長(zhǎng)度,即文件打開前的長(zhǎng)度,可以取未打開的文件長(zhǎng)度。 GetAttr: GetAttr (Pathname) 返回指定文件或文件夾的屬性。 FileAttr: FileAttr (文件號(hào)) 返回文件號(hào)對(duì)應(yīng)文件的打開方式。 GetDateTime: GetDateTime (Pathname) 返回文件被創(chuàng)建或修改的最后日期和時(shí)間。 Free: FreeFile[(0|1)] 返回未被占用的文件號(hào),F(xiàn)ree或Free(0)返回1~255之間未占用的文件號(hào),F(xiàn)ree(1)返回256~511之間未占用的文件。 Dir: Dir (Pathname [,Attributes]) 測(cè)試指定路徑是否有某文件,Attributes附加文件屬性條件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。 Kill: Kill (文件名) 刪除指定文件,文件名可包含路徑。 FileCopy: FileCopy 源文件,目標(biāo)文件 拷貝文件。 Name: Name 舊文件名 As 新文件名 文件重命名。前后路徑不一致時(shí),操作為移動(dòng)文件并重命名。 MkDir: MkDir path 新建文件夾。 RmDir: Rmdir path 刪除文件夾。 ChDrive: ChDrive Drive 改變當(dāng)前驅(qū)動(dòng)器 ChDrive "D" CurDir: CurDir [(driver)] 返回當(dāng)前工作路徑,指定driver則返回目標(biāo)驅(qū)動(dòng)器的當(dāng)前工作路徑。 五、文件操作實(shí)戰(zhàn) 1、新建文本文件a.txt,寫入數(shù)據(jù),關(guān)閉。打開該文件,全部讀入到新建文件b.txt,關(guān)閉。 '新建文件,并寫入數(shù)據(jù),關(guān)閉 '打開文件,并全部寫入新文件,關(guān)閉 2、新建隨機(jī)存儲(chǔ)文件a.dat,寫入數(shù)據(jù),關(guān)閉。打開該文件,讀入到新建文件b.dat,關(guān)閉。 '以下代碼位于Module模塊 '以下代碼位于窗體模塊 3、二進(jìn)制文件操作類似于隨機(jī)存儲(chǔ)文件,不再舉例。 |
|