




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第八章文件處理辦法8.1.1 程序在運(yùn)行時(shí)所所處理的數(shù)據(jù),根據(jù)其生存周期與存儲(chǔ)介質(zhì)通常分為二類:一類是只存儲(chǔ)在內(nèi)存中的工作數(shù)據(jù);另一類數(shù)據(jù)是記錄了程序的運(yùn)行結(jié)果,并且需要在以后的程序運(yùn)行或其它軟件中重復(fù)使用。對于后一類數(shù)據(jù),需要通過文件對其進(jìn)行保存。8.1.1 文件概念在計(jì)算機(jī)系統(tǒng)中,文件被定義成具有符號名(文件名)在邏輯上具有完整意義的有序數(shù)據(jù)集合,它被保存在磁盤、光盤等外部存儲(chǔ)器中,由操作系統(tǒng)進(jìn)行統(tǒng)一管理,用戶通過文件名對其進(jìn)行訪問。文件邏輯結(jié)構(gòu) 在操作系統(tǒng)中,文件的邏輯結(jié)構(gòu)分為字節(jié)流式與記錄式。VB的隨機(jī)文件屬于記錄式結(jié)構(gòu),而順序文件與二進(jìn)制文件在本質(zhì)上都屬于字節(jié)流式結(jié)構(gòu)。 在記錄式文件
2、內(nèi)數(shù)據(jù)被劃分為多個(gè)記錄。記錄是一種具有特定意義的數(shù)據(jù)單元,它被進(jìn)一步劃分為若干個(gè)字段。一個(gè)字段由若干個(gè)字節(jié)組成,對應(yīng)于某一VB標(biāo)準(zhǔn)數(shù)據(jù)類型,表示記錄的一個(gè)數(shù)據(jù)項(xiàng)。如以下學(xué)生學(xué)籍記錄由學(xué)號、姓名、性別、出生日期、家庭地址等字段組成。字節(jié)流式文件是由字節(jié)或字符序列組成的文件,其內(nèi)部不再劃分結(jié)構(gòu),因此字節(jié)或字符是其基本的數(shù)據(jù)訪問單位。 學(xué)號姓名性別出生日期家庭地址8.1.3 VB文件類型文件類型 VB文件的類型有兩種劃分方法:一種是按存取方式與邏輯結(jié)構(gòu)分為順序文件、隨機(jī)文件和二進(jìn)制文件。另一種是按編碼方式劃分為ASCII碼文件和二進(jìn)制編碼文件。 順序文件屬于ASCII碼文件,而隨機(jī)文件和二進(jìn)制文件同
3、屬于二進(jìn)制編碼文件。8.1.3 VB文件類型文件類型順序文件順序文件 順序文件在VB中專門用于處理以ASCII形式存儲(chǔ)的文本文件,即順序文件是字符流式文件。 順序文件的最大缺點(diǎn)在于在對文件修改時(shí),必須將所有文件字符讀入內(nèi)存,修改后再將修改結(jié)果寫入文件。 順序文件既可用于存儲(chǔ)文字信息,也可存儲(chǔ)表示數(shù)值的數(shù)字,但在存儲(chǔ)數(shù)字時(shí)會(huì)比二進(jìn)制文件占用更多的空間,因?yàn)槊總€(gè)數(shù)字都要按字符串存儲(chǔ)。2. 隨機(jī)文件隨機(jī)文件 一種可進(jìn)行隨機(jī)讀寫的記錄式文件。所謂“隨機(jī)”,是指在這種文件中,對任意位置的記錄的訪問,都只須一次磁盤操作就可完成,而無須訪問它前面的記錄。 在同一個(gè)隨機(jī)文件的邏輯結(jié)構(gòu)中,每個(gè)記錄都分配有一個(gè)記
4、錄號,所有的記錄都由相同的字段組成并具有相同的字節(jié)長度。記錄中的空白字段也必須占據(jù)空間,因此會(huì)造成一定存儲(chǔ)空間的浪費(fèi) 。8.1.3 VB文件類型文件類型3二進(jìn)制文件二進(jìn)制文件 一種以二進(jìn)制編碼存儲(chǔ)的字節(jié)流式文件,它可以字節(jié)為單位進(jìn)行快速存取,并可避免隨機(jī)文件中的空間浪費(fèi),但由于不存在記錄結(jié)構(gòu),文件數(shù)據(jù)的邏輯意義與存儲(chǔ)位置,都完全需要編程者自己進(jìn)行解釋與控制。 8.1.3 VB文件類型文件類型8.1.4 文件操作步驟VB的三類文件的操作都有著相同的步驟:1. 打開文件打開文件 這是文件操作的第一步,由Open語句完成,一個(gè)文件只有執(zhí)行打開命令后,才能對其進(jìn)行讀寫。在VB中,文件的建立也隱含在文件
5、的打開操作中,即當(dāng)用戶試圖打開一個(gè)不存在的文件進(jìn)行寫或追加操作時(shí),系統(tǒng)將自動(dòng)為其新建該文件。2.讀寫文件讀寫文件 文件的寫入與讀出,又統(tǒng)稱為文件訪問或文件存取。文件讀寫是文件操作的核心與目的。3關(guān)閉文件關(guān)閉文件 當(dāng)程序不再使用文件時(shí),應(yīng)立刻執(zhí)行關(guān)閉語句,以便釋放相關(guān)的系統(tǒng)資源。8.1.5 文件指針 用戶每打開一個(gè)文件,系統(tǒng)都會(huì)為其生成并維持一個(gè)文件指針,用來指示用戶對文件的下一個(gè)操作位置,其作用類似于字處理軟件中的光標(biāo)。該指針對用戶來說是不可見的,但確實(shí)存在,并對文件操作的理解有著非常大的幫助。對于大多數(shù)的文件打開方式,文件打開時(shí)文件指針指向文件的開始位置,并可隨用戶的文件訪問而自動(dòng)后移。對于
6、順序文件和二進(jìn)制,文件指針的移動(dòng)單位為字節(jié),對于隨機(jī)文件移動(dòng)單位為記錄號。 在程序中,用戶無法直接操縱文件指針,但可以通過Seek()函數(shù)與Seek語句返回或移動(dòng)文件指針的當(dāng)前值。 8.2.1 文件的打開 所有類型文件的打開或建立都使用Open語句,Open語句的完整格式如下:Open “文件名”For 打開方式 Access 存取類型 鎖定 As #文件號 Len=記錄長度Open 語句的語法包括以下幾個(gè)部分:部分是否必要說 明文件名必要字符串表達(dá)式,指定文件名,該文件名中允許包括目錄或文件夾及驅(qū)動(dòng)器打開方式(mode)可缺省默認(rèn)值為Random。為一個(gè)關(guān)鍵字,指定文件方式,有 Append
7、(追加)、Binary(二進(jìn)制)、Input(輸入)、Output(輸出)、或 Random(隨機(jī))方式存取類型(access)可缺省默認(rèn)值為Read Write。為一個(gè)關(guān)鍵字,說明打開的文件可以進(jìn)行的操作,有 Read(只讀)、Write(只寫)、或 Read Write(可讀可寫) 操作鎖定(Lock)可缺省默認(rèn)值為Shared。為一個(gè)關(guān)鍵字,說明限定于其它程序打開的文件的操作,有 Shared(共享)、Lock Read(禁止讀)、Lock Write(禁止寫)、和 Lock Read Write(禁止讀寫) 操作文件號必要一個(gè)有效的文件號,其前面的“#”號為可選,范圍在 1 到 511
8、 之間。在一個(gè)程序同時(shí)打開多個(gè)文件時(shí),文件號不允許重復(fù)。使用 FreeFile 函數(shù)可得到下一個(gè)可用的文件號記錄長度可缺省小于或等于 32,767(字節(jié))的一個(gè)數(shù)。對于打開隨機(jī)文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。對于二進(jìn)制文件,則忽略該參數(shù)8.2.2 文件的關(guān)閉所有文件關(guān)閉操作都使用相同的Close語句,其格式為:Close 文件號列表說明:(1)Close的作用是關(guān)閉已打開的文件,同時(shí)釋放文件在打開時(shí)所分配的緩沖區(qū)與文件號。(2)Close語句可以同時(shí)關(guān)閉多個(gè)已打開的文件。如Close #1,#2,#3,表示同時(shí)關(guān)閉文件號為1、2、3的三個(gè)已打開文件。(3)若省略文件號
9、列表參數(shù),則將關(guān)閉 Open 語句打開的所有活動(dòng)文件。(4)程序在退出時(shí),會(huì)自動(dòng)將所有尚未關(guān)閉的文件實(shí)施關(guān)閉操作。(5)順序文件的寫操作只是簡單地寫入內(nèi)存中的緩沖區(qū),僅當(dāng)緩沖區(qū)滿或在文件被關(guān)閉時(shí),才將緩沖區(qū)中的數(shù)據(jù)寫入磁盤文件。(6)Close語句也可以過程的形式執(zhí)行,即:Close(文件號列表) 8.2.3 文件處理函數(shù)與語句函數(shù)名稱參數(shù)返回值與功能說明EOF函數(shù)文件號測試指定文件的操作指針是否到達(dá)文件末尾,如果到達(dá)則返加True,否則返回False。FreeFile無返回值為整型。返回1 到 511 之間的下一個(gè)可用的文件號,以避免文件號使用重復(fù)Loc文件號返回值為 Long型。返回在已打
10、開的文件中上一次的讀/寫位置。對于隨機(jī)文件為記錄號,對于二進(jìn)制文件為字節(jié)數(shù),對于順序文件該函數(shù)無意義LOF文件號返回值為 Long型。返回用 Open 語句打開的文件的大小,該大小以字節(jié)為單位文件名返回值為 Long型。返回一個(gè)尚未打開的文件的大小,該大小以字節(jié)為單位Seek文件號返回值為 Long型。返回在已打開的文件中下一次的讀/寫位置,即文件指針的當(dāng)前值 。input字節(jié)數(shù)N,文件號 返回從文件的當(dāng)前位置讀取的N個(gè)字節(jié)的數(shù)據(jù)。只適用于順序文件與二進(jìn)制文件。8.2.3 文件處理函數(shù)與語句2Seek語句語句格式:Seek 文件號,指定位置功能:在 Open 語句打開的文件中,設(shè)置下一個(gè)讀/寫
11、操作的位置,即移動(dòng)文件指針。8.3.1 順序文件的寫操作1. Print #語句格式:print #文件號,輸出列表說明:(1)Print #語句與前面窗體或圖形框、打印機(jī)控件中的Print方法非常相似。該語句的作用是將過去輸出到屏幕或打印機(jī)中的數(shù)據(jù),轉(zhuǎn)而輸出到指定的文件中。(2)Print # 語句在將輸出列表中的最后一個(gè)字符寫入文件后會(huì)插入一個(gè)新行字符,即回車換行符(Chr(13) + Chr(10)。(3)系統(tǒng)會(huì)在Print#語句輸出的同時(shí)自動(dòng)移動(dòng)文件指針,從而確保多條Print#語句的輸出結(jié)果在文件中按順序排列,而不是相互覆蓋。(4)文件號為在Open語句中指定過的,與某個(gè)順序文件相關(guān)
12、聯(lián)的有效編號。(5)輸出列表可以指定多個(gè)輸出項(xiàng),其格式與Print方法中的基本相同。當(dāng)省略該參數(shù)時(shí),Print #語句將在順序文件中輸出一個(gè)空行。(6)通常用 Line Input #讀出 Print # 在文件中寫入的數(shù)據(jù)。8.3.1 順序文件的寫操作2.Write # 語句格式:Write #文件號,輸出列表Write # 語句與 Print # 語句的作用與用法基本相同。二者的不同之處在于,當(dāng)要將數(shù)據(jù)寫入文件時(shí),Write # 語句會(huì)自動(dòng)對數(shù)據(jù)項(xiàng)進(jìn)行分隔與標(biāo)識,比如,它會(huì)在數(shù)據(jù)項(xiàng)之間插入逗號,并自動(dòng)給字符串加上雙引號,給日期型與邏輯型數(shù)據(jù)兩邊加上“#”號。因此,在使用Write # 語句
13、時(shí),沒有必要在輸出列表中使用額外的分界符與定位函數(shù)Tab()。 8.3.2 順序文件的讀操作1、Line Input #語句格式:Line Input #文件號,字符串變量說明:(1)Line Input #語句的作用為:從已打開的順序文件中讀出一行并將它分配給一個(gè)字符串變量。(2)順序文件中的回車換行符 (Chr(13) + Chr(10)不會(huì)被輸入到字符串變量中。(3)順序文件的一個(gè)數(shù)據(jù)行如由多個(gè)數(shù)據(jù)項(xiàng)組成,Line Input #語句不區(qū)分?jǐn)?shù)據(jù)項(xiàng)的分隔符與界定符,而將它們?nèi)孔鳛樽址麅?nèi)容輸入到變量中。(4)Line Input #語句通常與Print #語句配對使用,即用Line Inp
14、ut #語句來讀取由Print#語句寫入的順序文件。8.3.2 順序文件的讀操作2、Input #語句格式:Input #文件號,變量列表說明:(1)從已打開的順序文件的當(dāng)前操作位置,按變量列表中變量的個(gè)數(shù),順序讀出一個(gè)或多個(gè)數(shù)據(jù)項(xiàng),并把它們賦給對應(yīng)的變量。(2)Input #語句讀取數(shù)據(jù)的單位是數(shù)據(jù)項(xiàng),而不是文本行,而且每條語句允許讀出多個(gè)數(shù)據(jù)。文件中數(shù)據(jù)項(xiàng)的分隔符有空格、回車換行符、逗號、雙引號(界定字符串?dāng)?shù)據(jù))、“#”號(界定邏輯型與時(shí)期時(shí)間型數(shù)據(jù))等。(3)變量列表參數(shù)中的變量允許有多個(gè),并且可以是任意數(shù)據(jù)類型,而不僅僅局限于字符串變量。但要求Input #語句在執(zhí)行時(shí),文件當(dāng)前位置順
15、序存在著與變量列表相符合的數(shù)據(jù)項(xiàng)序列,既要個(gè)數(shù)相符,又要類型相符。(4)為了正確讀出數(shù)據(jù),Input #語句一般只與Write#語句配合使用,即Input #語句只從由Write#語句寫入的文件中讀取數(shù)據(jù)。 8.4 隨機(jī)文件的訪問8.4.1 定義記錄類型在一個(gè)隨機(jī)文件中,所有的記錄都必須有著相同的結(jié)構(gòu)和長度,因此為了確保正確地訪問隨機(jī)文件,首先要使用自定義類型語句Type,根據(jù)隨機(jī)文件記錄的字段結(jié)構(gòu),定義一個(gè)相關(guān)的數(shù)據(jù)類型,然后使用該數(shù)據(jù)類型的變量訪問隨機(jī)文件。例如,對記錄由“學(xué)號”、“姓名”、“成績”三個(gè)字段組成的隨機(jī)文件,可為該文件的訪問,自定義如下結(jié)構(gòu)的數(shù)據(jù)類型:Type Student
16、TypeNumber As String*12Name As String*10Score As IntegerEnd type為確保文件訪問時(shí)記錄等長,自定義數(shù)據(jù)類型中的字符串元素必須給出確定的字符長度。8.4.2 隨機(jī)文件的寫操作隨機(jī)文件的寫操作是通過Put #語句完成的,格式為:Put # 文件號,記錄號,變量名說明:(1)Put #語句的作用為:將指定變量中的數(shù)據(jù),按給定的記錄號,寫入已打開的隨機(jī)文件中。(2)記錄號為大于或等于1的整數(shù)。如記錄號參數(shù)省略,則在文件指針的當(dāng)前位置處寫入。(3)語句中的變量必須為自定義的記錄類型。(4)當(dāng)記錄號指向文件中一個(gè)已存在的記錄時(shí),該記錄中的原有數(shù)
17、據(jù)將被覆蓋;當(dāng)指向一個(gè)不存在的記錄時(shí),系統(tǒng)將新建該記錄,若新建記錄號與原有記錄號不連續(xù),系統(tǒng)會(huì)在已有記錄與新建記錄間插入足夠的空白記錄。8.4.3 隨機(jī)文件的讀操作隨機(jī)文件的寫讀作通過Get #語句完成的,格式為:Get # 文件號,記錄號,變量名說明:(1)Get #語句的作用為:從已打開的隨機(jī)文件中,將指定的記錄讀出,并將其賦給指定的變量。(2)記錄號為大于或等于1的整數(shù)。如記錄號參數(shù)省略,則讀入文件指針指向的記錄。記錄號省略時(shí),其對應(yīng)位置的逗號不能省。(3)語句中的變量必須為自定義的記錄類型。(4)當(dāng)記錄號指向文件中一個(gè)并不存在的記錄時(shí),不會(huì)出錯(cuò),而是返回一個(gè)空白記錄給變量。(5)文件中
18、已存在的記錄數(shù)計(jì)算公式為:記錄數(shù)=文件長度/記錄長度其中,文件長度可由內(nèi)部函數(shù)LOF(文件號)獲得,記錄長度可由內(nèi)部函數(shù)Len(記錄變量)獲得。8.5 二進(jìn)制文件的訪問讀語句格式 Get # 文件號,開始位置,變量名寫語句格式 Put # 文件號,開始位置,變量名說明:(1)對于以二進(jìn)制方式打開的文件,Get #語句的作用為:按指定變量的長度從指定的位置開始連續(xù)讀取文件數(shù)據(jù),并將其賦給指定的變量。(2)對于以二進(jìn)制方式打開的文件,Put #語句的作用為:將指定變量中的數(shù)據(jù),寫入二進(jìn)制文件的指定的位置。(3)如開始位置參數(shù)省略,則從當(dāng)前文件指針指向的位置開始讀或?qū)憯?shù)據(jù)。(4)讀寫語句中的變量可以
19、是任意類型。(5)Put #與Get #語句,在對以二進(jìn)制方式打開的文件進(jìn)行操作時(shí),文件數(shù)據(jù)的定位單位為字節(jié),而不是記錄號。8.6.1 文件系統(tǒng)控件簡介1驅(qū)動(dòng)器列表框功能:用于顯示用戶系統(tǒng)中所有有效磁盤驅(qū)動(dòng)器的列表。關(guān)鍵屬性Drive:返回或設(shè)置用戶在列表框上的當(dāng)前選擇的驅(qū)動(dòng)器,默認(rèn)值為應(yīng)用程序所在的驅(qū)動(dòng)器。為只讀屬性,只在運(yùn)行時(shí)可用,在設(shè)計(jì)時(shí)不可用。關(guān)鍵事件Change:當(dāng)Drive屬性發(fā)生改變時(shí)觸發(fā)。2目錄列表框功能:從最高層開始顯示指定驅(qū)動(dòng)器的目錄結(jié)構(gòu)。關(guān)鍵屬性Path:設(shè)置或返回列表框中的當(dāng)前目錄的路徑,默認(rèn)值為應(yīng)用程序所在的驅(qū)動(dòng)器。為只讀屬性,只在運(yùn)行時(shí)可用,在設(shè)計(jì)時(shí)不可用。關(guān)鍵事件
20、Change:當(dāng)Path屬性發(fā)生改變時(shí)觸發(fā)。8.6.1 文件系統(tǒng)控件簡介3文件列表框:用于顯示指定目錄中的所有文件n關(guān)鍵屬性:(1)Path屬性:設(shè)置列表框中所顯示文件的當(dāng)前目錄的路徑,默認(rèn)值為應(yīng)用程序所在的目錄。(2) Pattern (模式)屬性:通過文件類型通配符,設(shè)置目錄中可顯示文件的子集,如設(shè)置該屬性的值為“*.txt”后,表示在文件列表框中只顯示文本文件,默認(rèn)值為“*.*”顯示所有文件。為只讀屬性。(3)屬性:返回或設(shè)置用戶在列表框上所選中的文件名及其路徑,為只讀屬性。n關(guān)鍵事件:(1)Change事件:當(dāng)Path屬性發(fā)生改變時(shí)觸發(fā)。(2)Click事件:當(dāng)用戶在列表框中選中某個(gè)文件時(shí)觸發(fā)。8.6.2 文件系統(tǒng)控件的組合1.驅(qū)動(dòng)器列表框與目錄列表框的關(guān)聯(lián)在驅(qū)動(dòng)器列表框的Chang事件過程中添加如下代碼:Private Sub DriveListBox_Change()End Sub上述賦值語句左邊的表示引用驅(qū)動(dòng)器列表框中所選定的驅(qū)動(dòng)器,賦值語句右邊的表示設(shè)置要在目錄列表框中顯示目錄結(jié)構(gòu)的驅(qū)動(dòng)器符號。整個(gè)事件過程的作用為:當(dāng)用戶在驅(qū)動(dòng)器列表框中改變所選定的驅(qū)動(dòng)器盤符后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沖刺2025年高考地理大題突破+限時(shí)集訓(xùn)(新高考)大題07工業(yè)(3大熱點(diǎn)角度)(解析版)
- 2025年棄泡沫塑料再生裝置合作協(xié)議書
- 2025企業(yè)借款合同范本(商業(yè)貸款)
- 2025年溫室大棚租賃合同
- 2025年熱力工程設(shè)備項(xiàng)目建議書
- 2025設(shè)備租賃終止合同模板
- 2025年血液體液診斷產(chǎn)品合作協(xié)議書
- 2025年鎢板、棒、絲材項(xiàng)目合作計(jì)劃書
- 2025年鋅壓延加工材項(xiàng)目建議書
- 2025年真空管太陽集熱器項(xiàng)目建議書
- 選擇性育種對犬類行為遺傳的影響
- 2024年北京市高考數(shù)學(xué)真題試卷及答案
- 走近湖湘紅色人物智慧樹知到答案2024年湖南工商大學(xué)
- DB51-T 5071-2011 蒸壓加氣混凝土砌塊墻體自保溫工程技術(shù)規(guī)程
- Elephant'sfriends繪本閱讀(課件)人教PEP版英語三年級上冊
- AQ6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范
- 多發(fā)性骨髓瘤腎損傷診治指南(2024版)
- 2024年中考數(shù)學(xué)反比例函數(shù)-選擇題(壓軸)(試題)
- 2024-2030年中國吸脂器行業(yè)現(xiàn)狀動(dòng)態(tài)與需求趨勢預(yù)測研究報(bào)告
- 【渠道視角下伊利股份營運(yùn)資金管理存在的問題及優(yōu)化建議探析9000字(論文)】
- 患者呼吸心跳驟停的應(yīng)急預(yù)案
評論
0/150
提交評論