版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第八章文件處理辦法8.1.1 程序在運行時所所處理的數(shù)據(jù),根據(jù)其生存周期與存儲介質(zhì)通常分為二類:一類是只存儲在內(nèi)存中的工作數(shù)據(jù);另一類數(shù)據(jù)是記錄了程序的運行結(jié)果,并且需要在以后的程序運行或其它軟件中重復(fù)使用。對于后一類數(shù)據(jù),需要通過文件對其進(jìn)行保存。8.1.1 文件概念在計算機(jī)系統(tǒng)中,文件被定義成具有符號名(文件名)在邏輯上具有完整意義的有序數(shù)據(jù)集合,它被保存在磁盤、光盤等外部存儲器中,由操作系統(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ù)被劃分為多個記錄。記錄是一種具有特定意義的數(shù)據(jù)單元,它被進(jìn)一步劃分為若干個字段。一個字段由若干個字節(jié)組成,對應(yīng)于某一VB標(biāo)準(zhǔn)數(shù)據(jù)類型,表示記錄的一個數(shù)據(jù)項。如以下學(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形式存儲的文本文件,即順序文件是字符流式文件。 順序文件的最大缺點在于在對文件修改時,必須將所有文件字符讀入內(nèi)存,修改后再將修改結(jié)果寫入文件。 順序文件既可用于存儲文字信息,也可存儲表示數(shù)值的數(shù)字,但在存儲數(shù)字時會比二進(jìn)制文件占用更多的空間,因為每個數(shù)字都要按字符串存儲。2. 隨機(jī)文件隨機(jī)文件 一種可進(jìn)行隨機(jī)讀寫的記錄式文件。所謂“隨機(jī)”,是指在這種文件中,對任意位置的記錄的訪問,都只須一次磁盤操作就可完成,而無須訪問它前面的記錄。 在同一個隨機(jī)文件的邏輯結(jié)構(gòu)中,每個記錄都分配有一個記
4、錄號,所有的記錄都由相同的字段組成并具有相同的字節(jié)長度。記錄中的空白字段也必須占據(jù)空間,因此會造成一定存儲空間的浪費 。8.1.3 VB文件類型文件類型3二進(jìn)制文件二進(jìn)制文件 一種以二進(jìn)制編碼存儲的字節(jié)流式文件,它可以字節(jié)為單位進(jìn)行快速存取,并可避免隨機(jī)文件中的空間浪費,但由于不存在記錄結(jié)構(gòu),文件數(shù)據(jù)的邏輯意義與存儲位置,都完全需要編程者自己進(jìn)行解釋與控制。 8.1.3 VB文件類型文件類型8.1.4 文件操作步驟VB的三類文件的操作都有著相同的步驟:1. 打開文件打開文件 這是文件操作的第一步,由Open語句完成,一個文件只有執(zhí)行打開命令后,才能對其進(jìn)行讀寫。在VB中,文件的建立也隱含在文件
5、的打開操作中,即當(dāng)用戶試圖打開一個不存在的文件進(jìn)行寫或追加操作時,系統(tǒng)將自動為其新建該文件。2.讀寫文件讀寫文件 文件的寫入與讀出,又統(tǒng)稱為文件訪問或文件存取。文件讀寫是文件操作的核心與目的。3關(guān)閉文件關(guān)閉文件 當(dāng)程序不再使用文件時,應(yīng)立刻執(zhí)行關(guān)閉語句,以便釋放相關(guān)的系統(tǒng)資源。8.1.5 文件指針 用戶每打開一個文件,系統(tǒng)都會為其生成并維持一個文件指針,用來指示用戶對文件的下一個操作位置,其作用類似于字處理軟件中的光標(biāo)。該指針對用戶來說是不可見的,但確實存在,并對文件操作的理解有著非常大的幫助。對于大多數(shù)的文件打開方式,文件打開時文件指針指向文件的開始位置,并可隨用戶的文件訪問而自動后移。對于
6、順序文件和二進(jìn)制,文件指針的移動單位為字節(jié),對于隨機(jī)文件移動單位為記錄號。 在程序中,用戶無法直接操縱文件指針,但可以通過Seek()函數(shù)與Seek語句返回或移動文件指針的當(dāng)前值。 8.2.1 文件的打開 所有類型文件的打開或建立都使用Open語句,Open語句的完整格式如下:Open “文件名”For 打開方式 Access 存取類型 鎖定 As #文件號 Len=記錄長度Open 語句的語法包括以下幾個部分:部分是否必要說 明文件名必要字符串表達(dá)式,指定文件名,該文件名中允許包括目錄或文件夾及驅(qū)動器打開方式(mode)可缺省默認(rèn)值為Random。為一個關(guān)鍵字,指定文件方式,有 Append
7、(追加)、Binary(二進(jìn)制)、Input(輸入)、Output(輸出)、或 Random(隨機(jī))方式存取類型(access)可缺省默認(rèn)值為Read Write。為一個關(guān)鍵字,說明打開的文件可以進(jìn)行的操作,有 Read(只讀)、Write(只寫)、或 Read Write(可讀可寫) 操作鎖定(Lock)可缺省默認(rèn)值為Shared。為一個關(guān)鍵字,說明限定于其它程序打開的文件的操作,有 Shared(共享)、Lock Read(禁止讀)、Lock Write(禁止寫)、和 Lock Read Write(禁止讀寫) 操作文件號必要一個有效的文件號,其前面的“#”號為可選,范圍在 1 到 511
8、 之間。在一個程序同時打開多個文件時,文件號不允許重復(fù)。使用 FreeFile 函數(shù)可得到下一個可用的文件號記錄長度可缺省小于或等于 32,767(字節(jié))的一個數(shù)。對于打開隨機(jī)文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。對于二進(jìn)制文件,則忽略該參數(shù)8.2.2 文件的關(guān)閉所有文件關(guān)閉操作都使用相同的Close語句,其格式為:Close 文件號列表說明:(1)Close的作用是關(guān)閉已打開的文件,同時釋放文件在打開時所分配的緩沖區(qū)與文件號。(2)Close語句可以同時關(guān)閉多個已打開的文件。如Close #1,#2,#3,表示同時關(guān)閉文件號為1、2、3的三個已打開文件。(3)若省略文件號
9、列表參數(shù),則將關(guān)閉 Open 語句打開的所有活動文件。(4)程序在退出時,會自動將所有尚未關(guān)閉的文件實施關(guān)閉操作。(5)順序文件的寫操作只是簡單地寫入內(nèi)存中的緩沖區(qū),僅當(dāng)緩沖區(qū)滿或在文件被關(guān)閉時,才將緩沖區(qū)中的數(shù)據(jù)寫入磁盤文件。(6)Close語句也可以過程的形式執(zhí)行,即:Close(文件號列表) 8.2.3 文件處理函數(shù)與語句函數(shù)名稱參數(shù)返回值與功能說明EOF函數(shù)文件號測試指定文件的操作指針是否到達(dá)文件末尾,如果到達(dá)則返加True,否則返回False。FreeFile無返回值為整型。返回1 到 511 之間的下一個可用的文件號,以避免文件號使用重復(fù)Loc文件號返回值為 Long型。返回在已打
10、開的文件中上一次的讀/寫位置。對于隨機(jī)文件為記錄號,對于二進(jìn)制文件為字節(jié)數(shù),對于順序文件該函數(shù)無意義LOF文件號返回值為 Long型。返回用 Open 語句打開的文件的大小,該大小以字節(jié)為單位文件名返回值為 Long型。返回一個尚未打開的文件的大小,該大小以字節(jié)為單位Seek文件號返回值為 Long型。返回在已打開的文件中下一次的讀/寫位置,即文件指針的當(dāng)前值 。input字節(jié)數(shù)N,文件號 返回從文件的當(dāng)前位置讀取的N個字節(jié)的數(shù)據(jù)。只適用于順序文件與二進(jìn)制文件。8.2.3 文件處理函數(shù)與語句2Seek語句語句格式:Seek 文件號,指定位置功能:在 Open 語句打開的文件中,設(shè)置下一個讀/寫
11、操作的位置,即移動文件指針。8.3.1 順序文件的寫操作1. Print #語句格式:print #文件號,輸出列表說明:(1)Print #語句與前面窗體或圖形框、打印機(jī)控件中的Print方法非常相似。該語句的作用是將過去輸出到屏幕或打印機(jī)中的數(shù)據(jù),轉(zhuǎn)而輸出到指定的文件中。(2)Print # 語句在將輸出列表中的最后一個字符寫入文件后會插入一個新行字符,即回車換行符(Chr(13) + Chr(10)。(3)系統(tǒng)會在Print#語句輸出的同時自動移動文件指針,從而確保多條Print#語句的輸出結(jié)果在文件中按順序排列,而不是相互覆蓋。(4)文件號為在Open語句中指定過的,與某個順序文件相關(guān)
12、聯(lián)的有效編號。(5)輸出列表可以指定多個輸出項,其格式與Print方法中的基本相同。當(dāng)省略該參數(shù)時,Print #語句將在順序文件中輸出一個空行。(6)通常用 Line Input #讀出 Print # 在文件中寫入的數(shù)據(jù)。8.3.1 順序文件的寫操作2.Write # 語句格式:Write #文件號,輸出列表Write # 語句與 Print # 語句的作用與用法基本相同。二者的不同之處在于,當(dāng)要將數(shù)據(jù)寫入文件時,Write # 語句會自動對數(shù)據(jù)項進(jìn)行分隔與標(biāo)識,比如,它會在數(shù)據(jù)項之間插入逗號,并自動給字符串加上雙引號,給日期型與邏輯型數(shù)據(jù)兩邊加上“#”號。因此,在使用Write # 語句
13、時,沒有必要在輸出列表中使用額外的分界符與定位函數(shù)Tab()。 8.3.2 順序文件的讀操作1、Line Input #語句格式:Line Input #文件號,字符串變量說明:(1)Line Input #語句的作用為:從已打開的順序文件中讀出一行并將它分配給一個字符串變量。(2)順序文件中的回車換行符 (Chr(13) + Chr(10)不會被輸入到字符串變量中。(3)順序文件的一個數(shù)據(jù)行如由多個數(shù)據(jù)項組成,Line Input #語句不區(qū)分?jǐn)?shù)據(jù)項的分隔符與界定符,而將它們?nèi)孔鳛樽址麅?nèi)容輸入到變量中。(4)Line Input #語句通常與Print #語句配對使用,即用Line Inp
14、ut #語句來讀取由Print#語句寫入的順序文件。8.3.2 順序文件的讀操作2、Input #語句格式:Input #文件號,變量列表說明:(1)從已打開的順序文件的當(dāng)前操作位置,按變量列表中變量的個數(shù),順序讀出一個或多個數(shù)據(jù)項,并把它們賦給對應(yīng)的變量。(2)Input #語句讀取數(shù)據(jù)的單位是數(shù)據(jù)項,而不是文本行,而且每條語句允許讀出多個數(shù)據(jù)。文件中數(shù)據(jù)項的分隔符有空格、回車換行符、逗號、雙引號(界定字符串?dāng)?shù)據(jù))、“#”號(界定邏輯型與時期時間型數(shù)據(jù))等。(3)變量列表參數(shù)中的變量允許有多個,并且可以是任意數(shù)據(jù)類型,而不僅僅局限于字符串變量。但要求Input #語句在執(zhí)行時,文件當(dāng)前位置順
15、序存在著與變量列表相符合的數(shù)據(jù)項序列,既要個數(shù)相符,又要類型相符。(4)為了正確讀出數(shù)據(jù),Input #語句一般只與Write#語句配合使用,即Input #語句只從由Write#語句寫入的文件中讀取數(shù)據(jù)。 8.4 隨機(jī)文件的訪問8.4.1 定義記錄類型在一個隨機(jī)文件中,所有的記錄都必須有著相同的結(jié)構(gòu)和長度,因此為了確保正確地訪問隨機(jī)文件,首先要使用自定義類型語句Type,根據(jù)隨機(jī)文件記錄的字段結(jié)構(gòu),定義一個相關(guān)的數(shù)據(jù)類型,然后使用該數(shù)據(jù)類型的變量訪問隨機(jī)文件。例如,對記錄由“學(xué)號”、“姓名”、“成績”三個字段組成的隨機(jī)文件,可為該文件的訪問,自定義如下結(jié)構(gòu)的數(shù)據(jù)類型:Type Student
16、TypeNumber As String*12Name As String*10Score As IntegerEnd type為確保文件訪問時記錄等長,自定義數(shù)據(jù)類型中的字符串元素必須給出確定的字符長度。8.4.2 隨機(jī)文件的寫操作隨機(jī)文件的寫操作是通過Put #語句完成的,格式為:Put # 文件號,記錄號,變量名說明:(1)Put #語句的作用為:將指定變量中的數(shù)據(jù),按給定的記錄號,寫入已打開的隨機(jī)文件中。(2)記錄號為大于或等于1的整數(shù)。如記錄號參數(shù)省略,則在文件指針的當(dāng)前位置處寫入。(3)語句中的變量必須為自定義的記錄類型。(4)當(dāng)記錄號指向文件中一個已存在的記錄時,該記錄中的原有數(shù)
17、據(jù)將被覆蓋;當(dāng)指向一個不存在的記錄時,系統(tǒng)將新建該記錄,若新建記錄號與原有記錄號不連續(xù),系統(tǒng)會在已有記錄與新建記錄間插入足夠的空白記錄。8.4.3 隨機(jī)文件的讀操作隨機(jī)文件的寫讀作通過Get #語句完成的,格式為:Get # 文件號,記錄號,變量名說明:(1)Get #語句的作用為:從已打開的隨機(jī)文件中,將指定的記錄讀出,并將其賦給指定的變量。(2)記錄號為大于或等于1的整數(shù)。如記錄號參數(shù)省略,則讀入文件指針指向的記錄。記錄號省略時,其對應(yīng)位置的逗號不能省。(3)語句中的變量必須為自定義的記錄類型。(4)當(dāng)記錄號指向文件中一個并不存在的記錄時,不會出錯,而是返回一個空白記錄給變量。(5)文件中
18、已存在的記錄數(shù)計算公式為:記錄數(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ù)據(jù)的定位單位為字節(jié),而不是記錄號。8.6.1 文件系統(tǒng)控件簡介1驅(qū)動器列表框功能:用于顯示用戶系統(tǒng)中所有有效磁盤驅(qū)動器的列表。關(guān)鍵屬性Drive:返回或設(shè)置用戶在列表框上的當(dāng)前選擇的驅(qū)動器,默認(rèn)值為應(yīng)用程序所在的驅(qū)動器。為只讀屬性,只在運行時可用,在設(shè)計時不可用。關(guān)鍵事件Change:當(dāng)Drive屬性發(fā)生改變時觸發(fā)。2目錄列表框功能:從最高層開始顯示指定驅(qū)動器的目錄結(jié)構(gòu)。關(guān)鍵屬性Path:設(shè)置或返回列表框中的當(dāng)前目錄的路徑,默認(rèn)值為應(yīng)用程序所在的驅(qū)動器。為只讀屬性,只在運行時可用,在設(shè)計時不可用。關(guān)鍵事件
20、Change:當(dāng)Path屬性發(fā)生改變時觸發(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ā)生改變時觸發(fā)。(2)Click事件:當(dāng)用戶在列表框中選中某個文件時觸發(fā)。8.6.2 文件系統(tǒng)控件的組合1.驅(qū)動器列表框與目錄列表框的關(guān)聯(lián)在驅(qū)動器列表框的Chang事件過程中添加如下代碼:Private Sub DriveListBox_Change()End Sub上述賦值語句左邊的表示引用驅(qū)動器列表框中所選定的驅(qū)動器,賦值語句右邊的表示設(shè)置要在目錄列表框中顯示目錄結(jié)構(gòu)的驅(qū)動器符號。整個事件過程的作用為:當(dāng)用戶在驅(qū)動器列表框中改變所選定的驅(qū)動器盤符后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民房租賃法律咨詢與維權(quán)合同
- 二零二五年度會議場地綠化及布置服務(wù)保障合同
- 二零二五年度內(nèi)衣品牌國際市場拓展與海外銷售合同
- 2025年度大型活動安保團(tuán)隊聘用合同范本
- 2025版鋁合金門窗安裝施工合同2篇
- 2025年度虛擬現(xiàn)實技術(shù)研發(fā)中心個人技術(shù)合作合同3篇
- 二零二五年度智能門禁系統(tǒng)研發(fā)與銷售合同4篇
- 湖北省宜昌市高三第二次調(diào)考試題語文試題(含答案)
- 2025年度個人股權(quán)收益分配合同范本3篇
- 2025年度個人合伙人股權(quán)解除合同范本4篇
- 2024年內(nèi)蒙古自治區(qū)專業(yè)技術(shù)人員繼續(xù)教育公需課考試答案
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標(biāo))
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測研究
- 河道保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 品管圈(QCC)案例-縮短接臺手術(shù)送手術(shù)時間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
- 清華大學(xué)考博英語歷年真題詳解
- 人教版三年級上冊口算題(全冊完整20份 )
評論
0/150
提交評論