版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.1文件處理文件是存儲(chǔ)數(shù)據(jù)的一種方式。將需要保存的數(shù)據(jù)寫入文件便可以將之存儲(chǔ)在磁盤,重復(fù)使用。7.1.1文件概述文件是一組相關(guān)信息的集合,是存放在磁盤上的一系列相關(guān)的字節(jié)。文件按名存取。1.記錄記錄由若干個(gè)相互關(guān)聯(lián)的數(shù)據(jù)項(xiàng)組成。例如,一條學(xué)生的學(xué)習(xí)成績(jī)記錄,由學(xué)號(hào)、姓名、各科成績(jī)、總分等數(shù)據(jù)項(xiàng)組成。下一頁(yè)返回7.1文件處理2.文件及其種類VisualBasic中的一個(gè)文件由若干條記錄組成,而一條記錄由若干個(gè)字段組成,字段由字符組成。根據(jù)不同的分類標(biāo)準(zhǔn),文件可分為不同的類型,如表7-1所示。為了有效地存取數(shù)據(jù),應(yīng)根據(jù)數(shù)據(jù)存放在文件中的方式,使用適當(dāng)?shù)奈募L問(wèn)類型。在VisualBasic中有三種文件訪問(wèn)的類型:順序訪問(wèn)、隨機(jī)訪問(wèn)、二進(jìn)制訪問(wèn)。(1)順序訪問(wèn)從文件頭開始,依次訪問(wèn)其中的數(shù)據(jù),適用于文本文件。(2)隨機(jī)訪問(wèn)適用于以記錄形式保存的二進(jìn)制文件,可以存取任意指定位置的記錄。上一頁(yè)下一頁(yè)返回7.1文件處理(3)二進(jìn)制訪問(wèn)適用于任意二進(jìn)制文件,以字節(jié)為單位存取數(shù)據(jù)。3.文件操作的一般步驟要讀取文件中的數(shù)據(jù),首先將文件“打開”,即將相關(guān)信息加載進(jìn)內(nèi)存,建立文件與內(nèi)存中某個(gè)文件緩沖區(qū)的關(guān)聯(lián);然后對(duì)文件執(zhí)行“存/取”操作,也就是寫入或讀取數(shù)據(jù);最后“關(guān)閉”文件,即釋放文件所占用的文件緩沖區(qū)。7.1.2訪問(wèn)文件的語(yǔ)句和函數(shù)VisualBasic提供了多個(gè)用于訪問(wèn)文件的語(yǔ)句和函數(shù)。其中的大部分語(yǔ)句和函數(shù)適用于3種文件訪問(wèn)類型。本節(jié)介紹常用的文件訪問(wèn)語(yǔ)句和函數(shù)。上一頁(yè)下一頁(yè)返回7.1文件處理1.打開文件———Open語(yǔ)句對(duì)文件進(jìn)行操作之前,必須用Open語(yǔ)句打開或建立一個(gè)文件。Open語(yǔ)句的功能是為文件的輸入/輸出分配緩沖區(qū),指定文件的存取類型(模式)和存取方式,定義與文件相關(guān)聯(lián)的文件號(hào)。Open語(yǔ)句的語(yǔ)法格式如下:Open文件名[FOR模式][Access存取類型][鎖定]AS[#]文件號(hào)[Len=記錄長(zhǎng)度]格式中的Open、FOR、Access、AS、Len為關(guān)鍵字,其中:(1)文件名可用字符串或字符型變量表示,可以包括盤符和路徑。(2)模式(mode)說(shuō)明訪問(wèn)文件的方式,可以取下列值:上一頁(yè)下一頁(yè)返回7.1文件處理①OutPut———設(shè)定為順序輸出模式。241②InPut———設(shè)定為順序輸入模式。③Append———設(shè)定為添加模式,與OutPut方式不同,以Append方式打開順序文件時(shí),文件指針定位在文件末尾,寫入的數(shù)據(jù)添加到原來(lái)文件的后面。④Random———設(shè)定為隨機(jī)訪問(wèn)模式。⑤Binary———設(shè)定為二進(jìn)制訪問(wèn)模式。如果缺?。疲希易泳?,將以隨機(jī)訪問(wèn)模式打開文件。上一頁(yè)下一頁(yè)返回7.1文件處理(3)存取類型(Access):用來(lái)指定訪問(wèn)文件的類型,可以是:①Read———對(duì)打開的文件只能進(jìn)行讀操作。②Write———對(duì)打開的文件只能進(jìn)行寫操作。③ReadWrite———對(duì)打開的文件可讀可寫。(4)文件號(hào)(Fileno)。其取值范圍為1~511。執(zhí)行Open語(yǔ)句時(shí),文件與分配給定的文件號(hào)相關(guān)聯(lián)。上一頁(yè)下一頁(yè)返回7.1文件處理(5)記錄長(zhǎng)度(Reclength)。其是一個(gè)整型表達(dá)式,其值≤32767。對(duì)順序文件,用該參數(shù)設(shè)定緩沖區(qū)的大小。不指定時(shí),緩沖區(qū)的缺省值為512個(gè)字節(jié)。注意:(1)如果以Output、Append、Random和Binary模式打開一個(gè)不存在的文件,VisualBasic會(huì)創(chuàng)建一個(gè)相應(yīng)的文件。(2)在Input、Random和Binary模式下,可用不同的文件號(hào)打開同一個(gè)文件,但以Output和Append模式打開的文件在關(guān)閉之前不能用不同的文件號(hào)重復(fù)地打開它。上一頁(yè)下一頁(yè)返回7.1文件處理(3)所有當(dāng)前使用的文件號(hào)必須是唯一的,即當(dāng)前使用的文件號(hào)不能再分配給其他文件。(4)如果以Output模式打開一個(gè)已存在的順序文件,則該文件中原來(lái)數(shù)據(jù)將被覆蓋,例如下列打開文件的語(yǔ)句:①Open"Exam"FOROutputAS#5如果文件“Exam”不存在,則建立一個(gè)新文件,可以將數(shù)據(jù)寫入到文件中去。如果文件“Exam”已存在,則該語(yǔ)句打開已存在的文件,新寫入的數(shù)據(jù)將覆蓋原來(lái)的數(shù)據(jù)。②Open"Exam"FORAppendAS#5如果文件“Exam”不存在,則建立一個(gè)新文件,否則打開已存在的、名為“Exam”的文件,新寫入的數(shù)據(jù)添加到文件的后面,原來(lái)的數(shù)據(jù)仍然存在。上一頁(yè)下一頁(yè)返回7.1文件處理③Open"Exam"FORInputAS#5打開已存在的、名為“Exam”的文件,可從中讀出數(shù)據(jù)。如果文件“Exam”不存在,將產(chǎn)生“FileNotFound”錯(cuò)誤。2.關(guān)閉文件———Close語(yǔ)句文件讀寫操作完成后,應(yīng)及時(shí)使用Close語(yǔ)句,關(guān)閉相應(yīng)的文件。(1)語(yǔ)句格式:Close[[#]<文件號(hào)>]。(2)語(yǔ)句功能:關(guān)閉指定的文件號(hào)對(duì)應(yīng)的文件,釋放相應(yīng)緩沖區(qū)和與該文件相聯(lián)系的文件號(hào)。上一頁(yè)下一頁(yè)返回7.1文件處理說(shuō)明:(1)該語(yǔ)句適用于任何文件。(2)語(yǔ)句中可以包含多個(gè)文件號(hào),文件號(hào)之間用逗號(hào)分隔。(3)若語(yǔ)句中缺省文件號(hào)參數(shù),則關(guān)閉所有用Open語(yǔ)句打開的文件。(4)當(dāng)應(yīng)用程序結(jié)束時(shí),會(huì)自動(dòng)關(guān)閉所有文件。比如,Close#1,#2,關(guān)閉文件號(hào)位1和2的文件。3.關(guān)閉所有文件———Reset語(yǔ)句(1)格式:Reset。上一頁(yè)下一頁(yè)返回7.1文件處理(2)功能:關(guān)閉所有用Open語(yǔ)句打開的文件。(3)說(shuō)明:該語(yǔ)句適用于任何文件。4.鎖定和解鎖語(yǔ)句———Lock和Unlock語(yǔ)句(1)Lock語(yǔ)句:①格式:Lock<[#]文件號(hào)>。②功能:鎖定指定文件號(hào)所對(duì)應(yīng)的文件,不允許其他用戶對(duì)該文件進(jìn)行讀/寫操作。(2)Unlock語(yǔ)句:①格式:Unlock<[#]文件號(hào)>。②功能:解除鎖定的文件。上一頁(yè)下一頁(yè)返回7.1文件處理5.文件操作函數(shù)和語(yǔ)句(1)EOF(文件號(hào)):當(dāng)文件指針到達(dá)文件結(jié)束標(biāo)志時(shí)返回True,否則返回False。(2)FreeFile[(文件號(hào)范圍)]:返回Open語(yǔ)句可以使用的下一個(gè)有效文件號(hào)。(3)LOF(文件號(hào)):返回已用Open語(yǔ)句打開的文件的字節(jié)數(shù)(文件長(zhǎng)度)。上一頁(yè)返回7.2順序文件以順序方式存取的文件稱為順序文件,其一般是文本文件。順序文件有下列特點(diǎn):每行數(shù)據(jù)長(zhǎng)度可以不同;增加數(shù)據(jù)時(shí),只能添加到原有數(shù)據(jù)的最后;查找數(shù)據(jù)時(shí),必須從頭開始順序查找。7.2.1順序文件的寫操作1.打開文件(1)格式:Open<文件名>For<Output/Append>As[#]<文件號(hào)>。(2)功能:用指定的文件號(hào)以順序輸出模式或添加模式打開文件。(3)說(shuō)明:①文件名可以是字符串,包含路徑;下一頁(yè)返回7.2順序文件②若指定的文件不存在,系統(tǒng)將創(chuàng)建一個(gè)相應(yīng)的文件;③以Output方式打開文件時(shí),文件中原有的數(shù)據(jù)將被覆蓋;④以Append方式打開文件時(shí),寫入的數(shù)據(jù)將添加到原文件的尾部;⑤文件號(hào)的使用必須是唯一的,即當(dāng)前已經(jīng)占用的文件號(hào)不能再分配給其他文件使用,文件號(hào)的使用范圍是1~511;⑥一個(gè)文件在用Output和Append方式打開后,不能再被重復(fù)打開。上一頁(yè)下一頁(yè)返回7.2順序文件下面是打開文件的一些例子。Open"D:\hb\Test.txt"ForOutputAs#1該命令打開D盤下hb文件夾中的Test.txt文件,文件號(hào)為1。再比如,下列代碼打開了D盤下hb文件夾中的Test.txt文件,文件號(hào)為100:DimsFileNameAsStringsFileName="D:\hb\Test.txt"OpensFileNameForAppendAs#100上一頁(yè)下一頁(yè)返回7.2順序文件但是,以下兩句是錯(cuò)的:Open"File1"ForOutPutAs#9Open"File2"ForOutputAs#9因?yàn)椴荒芤韵嗤奈募?hào)打開兩個(gè)不同的文件。下列兩句也是錯(cuò)的:Open"File1"ForAppendAs#10Open"File1"ForAppendAs#11因?yàn)椴荒茉谖募搓P(guān)閉前又將其重復(fù)打開。上一頁(yè)下一頁(yè)返回7.2順序文件2.Print語(yǔ)句(1)格式:Print<#文件號(hào)>,[<輸出列表>]。(2)功能:將輸出列表中的語(yǔ)句寫到順序文件中。(3)說(shuō)明:該語(yǔ)句和普通的Print語(yǔ)句的輸出控制格式完全相同,也分緊湊和標(biāo)準(zhǔn)兩種。3.Write語(yǔ)句(1)格式:Write<#文件號(hào)>,[<輸出列表>]。(2)功能:將輸出列表中的語(yǔ)句寫到順序文件中。(3)說(shuō)明:Write語(yǔ)句和Print語(yǔ)句的功能基本相同,它們之間的差別主要為:上一頁(yè)下一頁(yè)返回7.2順序文件①Write語(yǔ)句寫入的數(shù)據(jù)按照緊湊格式存放,各數(shù)據(jù)項(xiàng)之間自動(dòng)插入逗號(hào)作為分隔符;②Write語(yǔ)句寫入的字符串?dāng)?shù)據(jù)自動(dòng)加上雙引號(hào)作為限界符。7.2.2順序文件的讀操作當(dāng)一個(gè)文件存在時(shí),可以對(duì)它進(jìn)行讀操作。讀操作分為兩種,一種是一個(gè)數(shù)據(jù)一個(gè)數(shù)據(jù)地讀,另一種是一行數(shù)據(jù)一行數(shù)據(jù)地讀。1.打開文件(1)格式:Open<文件名>ForInputAs<#文件號(hào)>。(2)功能:用指定的文件號(hào)以順序輸入模式打開文件。上一頁(yè)下一頁(yè)返回7.2順序文件(3)說(shuō)明:以Input方式打開的文件,只能進(jìn)行讀操作。2.Input語(yǔ)句(1)格式:Input<#文件號(hào)>[,變量表]。(2)功能:從一個(gè)打開的順序文件中讀取數(shù)據(jù),并將其賦值給相應(yīng)的變量。(3)說(shuō)明:①變量表可以包含簡(jiǎn)單變量和數(shù)組元素,變量之間用逗號(hào)間隔,變量類型必須與文件中的數(shù)據(jù)項(xiàng)的類型一致。②從順序文件中讀數(shù)據(jù)時(shí),要從頭開始,依次讀出,若數(shù)據(jù)類型和變量類型不一致,則賦一個(gè)初值給對(duì)應(yīng)的變量。上一頁(yè)下一頁(yè)返回7.2順序文件③從順序文件讀數(shù)據(jù)時(shí),忽略前導(dǎo)空格、回車符、換行符。④讀取數(shù)值型數(shù)據(jù)時(shí),以其后的第一個(gè)空格,或逗號(hào),或回車換行符作為結(jié)束。⑤讀取字符型數(shù)據(jù)時(shí),以第一個(gè)不在雙引號(hào)里的逗號(hào),或回車換行符作為結(jié)束。⑥邏輯型和日期型數(shù)據(jù)以#號(hào)作為起始符和結(jié)束符,要求大寫。例如,已知Test.txt中的數(shù)據(jù):344578789,則執(zhí)行下列代碼后:DimAAsInteger,BASInteger,CAsInteger上一頁(yè)下一頁(yè)返回7.2順序文件DimStAsStringInput#2,A,B,C,St結(jié)果為:A=34,B=45,C=78,St=“789”。思考:若已知文件test.dat中的數(shù)據(jù)如下:ThisisFileTest.dat,-2365,4893,#True#要求按下面的格式將其輸出在窗體上:ThisisFiletest.dat-23654893True上一頁(yè)下一頁(yè)返回7.2順序文件3.LineInput語(yǔ)句(1)格式:LineInput<#文件號(hào)>,<變量名>。(2)功能:將順序文件以行為單位讀出并賦值給一個(gè)變量。(3)說(shuō)明:①變量為字符型變量,或字符型數(shù)組元素,或變體型變量。②將數(shù)據(jù)行中除回車符和換行符以外的所有字符都賦值給相應(yīng)的變量。例如,設(shè)計(jì)程序,將C盤根目錄下的config.sys文件的內(nèi)容顯示在文本框中。上一頁(yè)下一頁(yè)返回7.2順序文件分析:本例要用到打開文件、Do循環(huán)、EOF函數(shù)等,具體參考代碼如下:PrivateSubForm_Click()DimLineAsString,filenumberAsInteger,strAsStringfilenumber=freefileOpen“c:\config.sys”ForInputAs#filenumberDoWhileNotEOF(filenumber)LineInput#1,Line
上一頁(yè)下一頁(yè)返回7.2順序文件str=str+Line+Chr(13)+Chr(10)LoopClose#filenumberText1.Text=strEndSub順序文件的特點(diǎn)是:(1)數(shù)據(jù)只能從頭依次讀出;(2)寫文件時(shí)數(shù)據(jù)要么覆蓋原來(lái)的文件,要么添加在文件的最后。上一頁(yè)下一頁(yè)返回7.2順序文件這兩個(gè)特點(diǎn)給順序文件的修改與刪除帶來(lái)了困難。順序文件的應(yīng)用體現(xiàn)在兩方面:(1)從文件中讀取原始數(shù)據(jù)并提供給程序處理。(2)將程序處理結(jié)果存放到文件中。上一頁(yè)返回7.3隨機(jī)文件的處理以隨機(jī)方式存取的文件稱為隨機(jī)文件,也稱為記錄文件,它由一組長(zhǎng)度相等的記錄組成,一般用于數(shù)據(jù)庫(kù)文件。隨機(jī)文件具有以下特點(diǎn):(1)記錄定長(zhǎng)。(2)若記錄為單字段,則可對(duì)應(yīng)于任何一個(gè)VisualBasic的標(biāo)準(zhǔn)類型;若記錄為多字段,則必須由用戶進(jìn)行自定義。(3)可根據(jù)記錄號(hào)隨機(jī)訪問(wèn)任何一個(gè)記錄。7.3.1隨機(jī)文件的打開(1)格式:Open<文件名>[ForRandom]As[#]<文件號(hào)>Len=<記錄長(zhǎng)度>。下一頁(yè)返回7.3隨機(jī)文件的處理(2)功能:打開一個(gè)隨機(jī)文件。(3)說(shuō)明:①Random為文件的缺省訪問(wèn)模式,可省略。②Len為指定的記錄長(zhǎng)度,不能比實(shí)際寫入的數(shù)據(jù)短,否則會(huì)出錯(cuò)。7.3.2變量聲明在處理隨機(jī)文件之前
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國(guó)科學(xué)院科技戰(zhàn)略咨詢研究科技發(fā)展戰(zhàn)略研究所特別研究助理(博士后)招聘1人考試參考題庫(kù)及答案解析
- 2026內(nèi)蒙古赤峰市寧城縣八里罕中學(xué)招聘公益性崗位人員1人筆試備考題庫(kù)及答案解析
- 2026廣西河池市羅城仫佬族自治縣農(nóng)業(yè)農(nóng)村局招聘就業(yè)見習(xí)人員3人考試參考試題及答案解析
- 醫(yī)用生物化學(xué)檢測(cè)與分析儀器:精準(zhǔn)診斷的核心支撐體系全面解析
- 2026年金華市青少年宮公開招聘外聘(兼職)教師33人筆試備考試題及答案解析
- 2026重慶某國(guó)有企業(yè)員工招聘2人考試參考題庫(kù)及答案解析
- 2026年甘肅蘭州永登縣婦幼保健院招聘筆試備考題庫(kù)及答案解析
- 2026南昌市南鋼學(xué)校教育集團(tuán)勞務(wù)派遣教師招聘考試備考題庫(kù)及答案解析
- 2026湖南懷化市溆浦縣社會(huì)保險(xiǎn)服務(wù)中心公益性崗位招聘2人考試備考試題及答案解析
- 大連市西崗區(qū)2026年教育系統(tǒng)自主招聘應(yīng)屆畢業(yè)生備考題庫(kù)有答案詳解
- 艾滋病初篩實(shí)驗(yàn)室標(biāo)準(zhǔn)
- 藥物相互作用與不良反應(yīng)預(yù)防解析講座
- 11334《納稅籌劃》國(guó)家開放大學(xué)期末考試題庫(kù)
- 2025版臨床用血技術(shù)規(guī)范解讀課件
- 毒性中藥飲片培訓(xùn)
- 2025-2026學(xué)年人教版三年級(jí)道德與法治上冊(cè)期末測(cè)試卷題(附答案)
- 城市廣場(chǎng)石材鋪裝施工方案詳解
- DB54∕T 0527-2025 西藏自治區(qū)好住宅技術(shù)標(biāo)準(zhǔn)
- 人形機(jī)器人數(shù)據(jù)訓(xùn)練中心項(xiàng)目規(guī)劃設(shè)計(jì)方案
- 2026年內(nèi)蒙古化工職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)帶答案
- 2025年留置看護(hù)考試題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論