版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第八章文件處理辦法8.1.1 程序在運行時所所處理的數據,根據其生存周期與存儲介質通常分為二類:一類是只存儲在內存中的工作數據;另一類數據是記錄了程序的運行結果,并且需要在以后的程序運行或其它軟件中重復使用。對于后一類數據,需要通過文件對其進行保存。8.1.1 文件概念在計算機系統(tǒng)中,文件被定義成具有符號名(文件名)在邏輯上具有完整意義的有序數據集合,它被保存在磁盤、光盤等外部存儲器中,由操作系統(tǒng)進行統(tǒng)一管理,用戶通過文件名對其進行訪問。文件邏輯結構 在操作系統(tǒng)中,文件的邏輯結構分為字節(jié)流式與記錄式。VB的隨機文件屬于記錄式結構,而順序文件與二進制文件在本質上都屬于字節(jié)流式結構。 在記錄式文件
2、內數據被劃分為多個記錄。記錄是一種具有特定意義的數據單元,它被進一步劃分為若干個字段。一個字段由若干個字節(jié)組成,對應于某一VB標準數據類型,表示記錄的一個數據項。如以下學生學籍記錄由學號、姓名、性別、出生日期、家庭地址等字段組成。字節(jié)流式文件是由字節(jié)或字符序列組成的文件,其內部不再劃分結構,因此字節(jié)或字符是其基本的數據訪問單位。 學號姓名性別出生日期家庭地址8.1.3 VB文件類型文件類型 VB文件的類型有兩種劃分方法:一種是按存取方式與邏輯結構分為順序文件、隨機文件和二進制文件。另一種是按編碼方式劃分為ASCII碼文件和二進制編碼文件。 順序文件屬于ASCII碼文件,而隨機文件和二進制文件同
3、屬于二進制編碼文件。8.1.3 VB文件類型文件類型順序文件順序文件 順序文件在VB中專門用于處理以ASCII形式存儲的文本文件,即順序文件是字符流式文件。 順序文件的最大缺點在于在對文件修改時,必須將所有文件字符讀入內存,修改后再將修改結果寫入文件。 順序文件既可用于存儲文字信息,也可存儲表示數值的數字,但在存儲數字時會比二進制文件占用更多的空間,因為每個數字都要按字符串存儲。2. 隨機文件隨機文件 一種可進行隨機讀寫的記錄式文件。所謂“隨機”,是指在這種文件中,對任意位置的記錄的訪問,都只須一次磁盤操作就可完成,而無須訪問它前面的記錄。 在同一個隨機文件的邏輯結構中,每個記錄都分配有一個記
4、錄號,所有的記錄都由相同的字段組成并具有相同的字節(jié)長度。記錄中的空白字段也必須占據空間,因此會造成一定存儲空間的浪費 。8.1.3 VB文件類型文件類型3二進制文件二進制文件 一種以二進制編碼存儲的字節(jié)流式文件,它可以字節(jié)為單位進行快速存取,并可避免隨機文件中的空間浪費,但由于不存在記錄結構,文件數據的邏輯意義與存儲位置,都完全需要編程者自己進行解釋與控制。 8.1.3 VB文件類型文件類型8.1.4 文件操作步驟VB的三類文件的操作都有著相同的步驟:1. 打開文件打開文件 這是文件操作的第一步,由Open語句完成,一個文件只有執(zhí)行打開命令后,才能對其進行讀寫。在VB中,文件的建立也隱含在文件
5、的打開操作中,即當用戶試圖打開一個不存在的文件進行寫或追加操作時,系統(tǒng)將自動為其新建該文件。2.讀寫文件讀寫文件 文件的寫入與讀出,又統(tǒng)稱為文件訪問或文件存取。文件讀寫是文件操作的核心與目的。3關閉文件關閉文件 當程序不再使用文件時,應立刻執(zhí)行關閉語句,以便釋放相關的系統(tǒng)資源。8.1.5 文件指針 用戶每打開一個文件,系統(tǒng)都會為其生成并維持一個文件指針,用來指示用戶對文件的下一個操作位置,其作用類似于字處理軟件中的光標。該指針對用戶來說是不可見的,但確實存在,并對文件操作的理解有著非常大的幫助。對于大多數的文件打開方式,文件打開時文件指針指向文件的開始位置,并可隨用戶的文件訪問而自動后移。對于
6、順序文件和二進制,文件指針的移動單位為字節(jié),對于隨機文件移動單位為記錄號。 在程序中,用戶無法直接操縱文件指針,但可以通過Seek()函數與Seek語句返回或移動文件指針的當前值。 8.2.1 文件的打開 所有類型文件的打開或建立都使用Open語句,Open語句的完整格式如下:Open “文件名”For 打開方式 Access 存取類型 鎖定 As #文件號 Len=記錄長度Open 語句的語法包括以下幾個部分:部分是否必要說 明文件名必要字符串表達式,指定文件名,該文件名中允許包括目錄或文件夾及驅動器打開方式(mode)可缺省默認值為Random。為一個關鍵字,指定文件方式,有 Append
7、(追加)、Binary(二進制)、Input(輸入)、Output(輸出)、或 Random(隨機)方式存取類型(access)可缺省默認值為Read Write。為一個關鍵字,說明打開的文件可以進行的操作,有 Read(只讀)、Write(只寫)、或 Read Write(可讀可寫) 操作鎖定(Lock)可缺省默認值為Shared。為一個關鍵字,說明限定于其它程序打開的文件的操作,有 Shared(共享)、Lock Read(禁止讀)、Lock Write(禁止寫)、和 Lock Read Write(禁止讀寫) 操作文件號必要一個有效的文件號,其前面的“#”號為可選,范圍在 1 到 511
8、 之間。在一個程序同時打開多個文件時,文件號不允許重復。使用 FreeFile 函數可得到下一個可用的文件號記錄長度可缺省小于或等于 32,767(字節(jié))的一個數。對于打開隨機文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數。對于二進制文件,則忽略該參數8.2.2 文件的關閉所有文件關閉操作都使用相同的Close語句,其格式為:Close 文件號列表說明:(1)Close的作用是關閉已打開的文件,同時釋放文件在打開時所分配的緩沖區(qū)與文件號。(2)Close語句可以同時關閉多個已打開的文件。如Close #1,#2,#3,表示同時關閉文件號為1、2、3的三個已打開文件。(3)若省略文件號
9、列表參數,則將關閉 Open 語句打開的所有活動文件。(4)程序在退出時,會自動將所有尚未關閉的文件實施關閉操作。(5)順序文件的寫操作只是簡單地寫入內存中的緩沖區(qū),僅當緩沖區(qū)滿或在文件被關閉時,才將緩沖區(qū)中的數據寫入磁盤文件。(6)Close語句也可以過程的形式執(zhí)行,即:Close(文件號列表) 8.2.3 文件處理函數與語句函數名稱參數返回值與功能說明EOF函數文件號測試指定文件的操作指針是否到達文件末尾,如果到達則返加True,否則返回False。FreeFile無返回值為整型。返回1 到 511 之間的下一個可用的文件號,以避免文件號使用重復Loc文件號返回值為 Long型。返回在已打
10、開的文件中上一次的讀/寫位置。對于隨機文件為記錄號,對于二進制文件為字節(jié)數,對于順序文件該函數無意義LOF文件號返回值為 Long型。返回用 Open 語句打開的文件的大小,該大小以字節(jié)為單位文件名返回值為 Long型。返回一個尚未打開的文件的大小,該大小以字節(jié)為單位Seek文件號返回值為 Long型。返回在已打開的文件中下一次的讀/寫位置,即文件指針的當前值 。input字節(jié)數N,文件號 返回從文件的當前位置讀取的N個字節(jié)的數據。只適用于順序文件與二進制文件。8.2.3 文件處理函數與語句2Seek語句語句格式:Seek 文件號,指定位置功能:在 Open 語句打開的文件中,設置下一個讀/寫
11、操作的位置,即移動文件指針。8.3.1 順序文件的寫操作1. Print #語句格式:print #文件號,輸出列表說明:(1)Print #語句與前面窗體或圖形框、打印機控件中的Print方法非常相似。該語句的作用是將過去輸出到屏幕或打印機中的數據,轉而輸出到指定的文件中。(2)Print # 語句在將輸出列表中的最后一個字符寫入文件后會插入一個新行字符,即回車換行符(Chr(13) + Chr(10)。(3)系統(tǒng)會在Print#語句輸出的同時自動移動文件指針,從而確保多條Print#語句的輸出結果在文件中按順序排列,而不是相互覆蓋。(4)文件號為在Open語句中指定過的,與某個順序文件相關
12、聯的有效編號。(5)輸出列表可以指定多個輸出項,其格式與Print方法中的基本相同。當省略該參數時,Print #語句將在順序文件中輸出一個空行。(6)通常用 Line Input #讀出 Print # 在文件中寫入的數據。8.3.1 順序文件的寫操作2.Write # 語句格式:Write #文件號,輸出列表Write # 語句與 Print # 語句的作用與用法基本相同。二者的不同之處在于,當要將數據寫入文件時,Write # 語句會自動對數據項進行分隔與標識,比如,它會在數據項之間插入逗號,并自動給字符串加上雙引號,給日期型與邏輯型數據兩邊加上“#”號。因此,在使用Write # 語句
13、時,沒有必要在輸出列表中使用額外的分界符與定位函數Tab()。 8.3.2 順序文件的讀操作1、Line Input #語句格式:Line Input #文件號,字符串變量說明:(1)Line Input #語句的作用為:從已打開的順序文件中讀出一行并將它分配給一個字符串變量。(2)順序文件中的回車換行符 (Chr(13) + Chr(10)不會被輸入到字符串變量中。(3)順序文件的一個數據行如由多個數據項組成,Line Input #語句不區(qū)分數據項的分隔符與界定符,而將它們全部作為字符內容輸入到變量中。(4)Line Input #語句通常與Print #語句配對使用,即用Line Inp
14、ut #語句來讀取由Print#語句寫入的順序文件。8.3.2 順序文件的讀操作2、Input #語句格式:Input #文件號,變量列表說明:(1)從已打開的順序文件的當前操作位置,按變量列表中變量的個數,順序讀出一個或多個數據項,并把它們賦給對應的變量。(2)Input #語句讀取數據的單位是數據項,而不是文本行,而且每條語句允許讀出多個數據。文件中數據項的分隔符有空格、回車換行符、逗號、雙引號(界定字符串數據)、“#”號(界定邏輯型與時期時間型數據)等。(3)變量列表參數中的變量允許有多個,并且可以是任意數據類型,而不僅僅局限于字符串變量。但要求Input #語句在執(zhí)行時,文件當前位置順
15、序存在著與變量列表相符合的數據項序列,既要個數相符,又要類型相符。(4)為了正確讀出數據,Input #語句一般只與Write#語句配合使用,即Input #語句只從由Write#語句寫入的文件中讀取數據。 8.4 隨機文件的訪問8.4.1 定義記錄類型在一個隨機文件中,所有的記錄都必須有著相同的結構和長度,因此為了確保正確地訪問隨機文件,首先要使用自定義類型語句Type,根據隨機文件記錄的字段結構,定義一個相關的數據類型,然后使用該數據類型的變量訪問隨機文件。例如,對記錄由“學號”、“姓名”、“成績”三個字段組成的隨機文件,可為該文件的訪問,自定義如下結構的數據類型:Type Student
16、TypeNumber As String*12Name As String*10Score As IntegerEnd type為確保文件訪問時記錄等長,自定義數據類型中的字符串元素必須給出確定的字符長度。8.4.2 隨機文件的寫操作隨機文件的寫操作是通過Put #語句完成的,格式為:Put # 文件號,記錄號,變量名說明:(1)Put #語句的作用為:將指定變量中的數據,按給定的記錄號,寫入已打開的隨機文件中。(2)記錄號為大于或等于1的整數。如記錄號參數省略,則在文件指針的當前位置處寫入。(3)語句中的變量必須為自定義的記錄類型。(4)當記錄號指向文件中一個已存在的記錄時,該記錄中的原有數
17、據將被覆蓋;當指向一個不存在的記錄時,系統(tǒng)將新建該記錄,若新建記錄號與原有記錄號不連續(xù),系統(tǒng)會在已有記錄與新建記錄間插入足夠的空白記錄。8.4.3 隨機文件的讀操作隨機文件的寫讀作通過Get #語句完成的,格式為:Get # 文件號,記錄號,變量名說明:(1)Get #語句的作用為:從已打開的隨機文件中,將指定的記錄讀出,并將其賦給指定的變量。(2)記錄號為大于或等于1的整數。如記錄號參數省略,則讀入文件指針指向的記錄。記錄號省略時,其對應位置的逗號不能省。(3)語句中的變量必須為自定義的記錄類型。(4)當記錄號指向文件中一個并不存在的記錄時,不會出錯,而是返回一個空白記錄給變量。(5)文件中
18、已存在的記錄數計算公式為:記錄數=文件長度/記錄長度其中,文件長度可由內部函數LOF(文件號)獲得,記錄長度可由內部函數Len(記錄變量)獲得。8.5 二進制文件的訪問讀語句格式 Get # 文件號,開始位置,變量名寫語句格式 Put # 文件號,開始位置,變量名說明:(1)對于以二進制方式打開的文件,Get #語句的作用為:按指定變量的長度從指定的位置開始連續(xù)讀取文件數據,并將其賦給指定的變量。(2)對于以二進制方式打開的文件,Put #語句的作用為:將指定變量中的數據,寫入二進制文件的指定的位置。(3)如開始位置參數省略,則從當前文件指針指向的位置開始讀或寫數據。(4)讀寫語句中的變量可以
19、是任意類型。(5)Put #與Get #語句,在對以二進制方式打開的文件進行操作時,文件數據的定位單位為字節(jié),而不是記錄號。8.6.1 文件系統(tǒng)控件簡介1驅動器列表框功能:用于顯示用戶系統(tǒng)中所有有效磁盤驅動器的列表。關鍵屬性Drive:返回或設置用戶在列表框上的當前選擇的驅動器,默認值為應用程序所在的驅動器。為只讀屬性,只在運行時可用,在設計時不可用。關鍵事件Change:當Drive屬性發(fā)生改變時觸發(fā)。2目錄列表框功能:從最高層開始顯示指定驅動器的目錄結構。關鍵屬性Path:設置或返回列表框中的當前目錄的路徑,默認值為應用程序所在的驅動器。為只讀屬性,只在運行時可用,在設計時不可用。關鍵事件
20、Change:當Path屬性發(fā)生改變時觸發(fā)。8.6.1 文件系統(tǒng)控件簡介3文件列表框:用于顯示指定目錄中的所有文件n關鍵屬性:(1)Path屬性:設置列表框中所顯示文件的當前目錄的路徑,默認值為應用程序所在的目錄。(2) Pattern (模式)屬性:通過文件類型通配符,設置目錄中可顯示文件的子集,如設置該屬性的值為“*.txt”后,表示在文件列表框中只顯示文本文件,默認值為“*.*”顯示所有文件。為只讀屬性。(3)屬性:返回或設置用戶在列表框上所選中的文件名及其路徑,為只讀屬性。n關鍵事件:(1)Change事件:當Path屬性發(fā)生改變時觸發(fā)。(2)Click事件:當用戶在列表框中選中某個文件時觸發(fā)。8.6.2 文件系統(tǒng)控件的組合1.驅動器列表框與目錄列表框的關聯在驅動器列表框的Chang事件過程中添加如下代碼:Private Sub DriveListBox_Change()End Sub上述賦值語句左邊的表示引用驅動器列表框中所選定的驅動器,賦值語句右邊的表示設置要在目錄列表框中顯示目錄結構的驅動器符號。整個事件過程的作用為:當用戶在驅動器列表框中改變所選定的驅動器盤符后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市排水辦公樓施工合同
- 紡織品采購招標法律培訓
- 市政工程電力招投標技術規(guī)范本
- 通信網絡監(jiān)理管理規(guī)程
- 地鐵換乘站隧洞施工合同
- 紡織維修工具管理辦法
- 建筑行業(yè)電力工程安裝合同
- 公交站點候車亭設施維修
- 科研實驗中心建設合同
- 設備租賃合同:攝影器材
- 頭顱CT最全讀片-課件
- 電解車間技術、安全及設備維護保養(yǎng)手冊
- 中醫(yī)西醫(yī)的比較之我見中西結合
- 中國航天發(fā)展史模板
- 骨科學研究生復試真題匯總版
- 初中信息技術人教八年級上冊 綜合實踐活動第2節(jié) 制作視頻類數字故事
- 小學綜合實踐六年級上冊第4單元《主題活動三:校園文化活動我參與》教案
- 人教PEP小學三年級英語下冊教學計劃及進度表
- 鐵路產品認證中心(CRCC)認證的鐵路產品目錄及標準
- 《新疆維吾爾自治區(qū)建筑安裝工程費用定額》2010年
- 《職業(yè)發(fā)展與就業(yè)指導》全書教案全套教學單元設計
評論
0/150
提交評論