《vb第2版》課件第10章 數(shù)據(jù)文件_第1頁(yè)
《vb第2版》課件第10章 數(shù)據(jù)文件_第2頁(yè)
《vb第2版》課件第10章 數(shù)據(jù)文件_第3頁(yè)
《vb第2版》課件第10章 數(shù)據(jù)文件_第4頁(yè)
《vb第2版》課件第10章 數(shù)據(jù)文件_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十章數(shù)據(jù)文件10.1文件基本概念10.2文件操作10.3文件控件10.4本章小結(jié)10.1文件基本概念■10.1.1文件文件是指在外部存儲(chǔ)器上數(shù)據(jù)的集合。在計(jì)算機(jī)系統(tǒng)中,文件被解釋為一組賦名的相關(guān)聯(lián)字符流的集合,或者是相關(guān)聯(lián)記錄的集合。VisualBasic使用“文件”這個(gè)概念來(lái)對(duì)外部存儲(chǔ)器上的數(shù)據(jù)進(jìn)行訪問(wèn)。為了有效的存取外部存儲(chǔ)器中的數(shù)據(jù),就必須將外部數(shù)據(jù)有效的組織起來(lái)。10.1文件基本概念■10.1.2文件分類(lèi)1.根據(jù)文件內(nèi)容,文件可分為

(1)程序文件(ProgramFile):

(2)數(shù)據(jù)文件(DataFile):2.根據(jù)存取方式和結(jié)構(gòu)分類(lèi),數(shù)據(jù)文件又可分為

(1)順序存取文件(SequentialAccessFile):

(2)隨機(jī)存取文件(RandomAccessFile):3.根據(jù)文件信息的編碼方式,文件又可以分為

(1)ASCII文件:(2)二進(jìn)制文件(BinaryFile):10.2文件操作■10.2.1文件處理的步驟1.打開(kāi)文件一個(gè)文件必須先打開(kāi)才能讀/寫(xiě)。如果一個(gè)文件已經(jīng)存在,則打開(kāi)該文件;如果不存在,則先建立再打開(kāi)該文件。2.進(jìn)行讀/寫(xiě)操作在打開(kāi)的文件上執(zhí)行所要求的輸入或輸出操作。在文件的輸入輸出中,把內(nèi)存中的數(shù)據(jù)傳輸?shù)较嚓P(guān)聯(lián)的外部設(shè)備(如磁盤(pán))并作為文件存放的操作稱(chēng)為寫(xiě)數(shù)據(jù),或稱(chēng)為輸出;把外部設(shè)備上文件中的數(shù)據(jù)傳輸?shù)絻?nèi)存中的操作稱(chēng)為讀數(shù)據(jù),或稱(chēng)為輸入。3.關(guān)閉文件打開(kāi)的文件使用(讀/寫(xiě))完后,必須關(guān)閉,否則會(huì)造成數(shù)據(jù)丟失。關(guān)閉文件會(huì)將文件緩沖區(qū)中的數(shù)據(jù)全部寫(xiě)入磁盤(pán),釋放掉該文件緩沖區(qū)占用的內(nèi)存。10.2文件操作■10.2.2順序文件

1.順序文件的打開(kāi)(建立)

格式:Open<文件名>For訪問(wèn)模式Acess訪問(wèn)方式[Lock]As[#]文件號(hào)[Len=記錄長(zhǎng)度]說(shuō)明:①文件名是指要打開(kāi)的文件的名稱(chēng),可包含驅(qū)動(dòng)器名及路徑名。②訪問(wèn)模式:是指文件的打開(kāi)方式,對(duì)順序文件而言,有3種模式。

Output(輸出):相當(dāng)于寫(xiě)文件。

Input(輸入):相當(dāng)于讀文件。

Append(添加):相當(dāng)于將數(shù)據(jù)添加在文件尾部。10.2文件操作■10.2.2順序文件③訪問(wèn)方式:為可選參數(shù)。它是說(shuō)明打開(kāi)文件所允許的操作,有以下3種方式。

Read:只讀。

Write:只寫(xiě)。

ReadWrite:讀寫(xiě)皆可,只適用于順序文件的Append模式。④Lock:為可選參數(shù)。它是指其他進(jìn)程對(duì)打開(kāi)文件所允許的操作,有以下3種方式。

Shared:可對(duì)此文件讀寫(xiě)。

LockRead:不允許讀此文件。

LockWrite:不允許寫(xiě)此文件。10.2文件操作■10.2.2順序文件⑤文件號(hào):為必選參數(shù),是給打開(kāi)的文件分配一個(gè)文件號(hào),范圍在1~511之間。一旦給文件指定了文件號(hào),該文件號(hào)就代表打開(kāi)的文件,在該文件關(guān)閉以前進(jìn)行的讀寫(xiě)操作均使用該文件號(hào);直到關(guān)閉此文件,此文件號(hào)才能被其他文件使用。⑥記錄長(zhǎng)度:為可選參數(shù)。它是一個(gè)小于或等于32767字節(jié)的數(shù)。對(duì)于順序文件,該值是緩沖字符數(shù),指定進(jìn)行數(shù)據(jù)交換時(shí)數(shù)據(jù)緩沖區(qū)的大小。⑦Open語(yǔ)句具有打開(kāi)文件和建立文件兩種功能。如果為Input方式打開(kāi)的文件不存在,則產(chǎn)生“文件未找到”錯(cuò)誤;如果為Output、Append等方式打開(kāi)的文件不存在,則建立并打開(kāi)文件。10.2文件操作■10.2.2順序文件2.關(guān)閉文件的命令是Close。格式:

Close[#]文件號(hào)[,[#]文件號(hào)]…功能:關(guān)閉Open語(yǔ)句所打開(kāi)的指定文件。10.2文件操作■10.2.2順序文件3.順序文件的寫(xiě)操作(1)Print#語(yǔ)句。語(yǔ)句格式:Print#<文件號(hào)>[,<輸出列表>]功能:按規(guī)定格式把輸出表中的數(shù)據(jù)寫(xiě)入文件號(hào)指定的順序文件中。(2)Write#語(yǔ)句格式:Write#文件號(hào)[,輸出列表]注意:多個(gè)表達(dá)式之間可用空白、分號(hào)或逗號(hào)隔開(kāi),空白或分號(hào)等效。

10.2文件操作■例【10-1】:用如下語(yǔ)句建立文件city.dat,并把文本框Text1.Text的內(nèi)容寫(xiě)入該文件中。PrivateSubCommand1_Click()DimFileNumAsIntegerFileNum=FreeFile()Open“city.dat”ForOutputAsFileNumPrint#FileNum,Text1.TextCloseFileNumEndSub10.2文件操作■例【10-2】:建立一個(gè)簡(jiǎn)單的順序文件testfile.txt

。PrivateSubForm_Click()DimfilenameAsStringfilename=”c:\testfile.txt”O(jiān)penfilenameForOutputAs#1Print#1,”This”;”is”;”my”;”first”;”file.”P(pán)rint#1,”This”,”is”,”my”,”second”,”file.”Close#1MsgBox”內(nèi)容已經(jīng)成功寫(xiě)入文件”&filenameEndSub10.2文件操作■例【10-3】:使用Write#語(yǔ)句建立上面的testfile.txt文件PrivateSubForm_Click()DimfilenameAsStringfilename=”c:\testfile.txt”O(jiān)penfilenameForOutputAs#1Write#1,”This”;”is”;”my”;”first”;”file.”,1Write#1,”This”,”is”,”my”,”second”,”file.”,2Close#1MsgBox“內(nèi)容已經(jīng)成功寫(xiě)入文件”&filenameEndSub10.2文件操作■10.2.2順序文件4.順序文件的讀操作(1)Input#語(yǔ)句Input#文件號(hào),變量列表功能:從已打開(kāi)的順序文件指針?biāo)傅奈恢闷?,讀出數(shù)據(jù)項(xiàng),依次賦值給變量表中的各變量。(2)LineInput#語(yǔ)句格式:LineInput#文件號(hào),字符串變量功能:從順序文件中讀取一個(gè)完整的行,并把它賦給一個(gè)字符串變量。(3)Input函數(shù)格式:Input(n,#<文件號(hào)>)功能:返回從指定的文件中讀出n個(gè)字符的字符串。10.2文件操作■例【10-4】:測(cè)試Input語(yǔ)句PrivateSubForm_Click()DimfilenameAsStringfilename=”c:\testfile.txt”O(jiān)penfilenameForOutputAs#1Write#1,”O(jiān)ne”,”Two”,”Line1”Write#1,”Three”,”Four”,”Line2”Close#1Dims1,s2AsStringOpenfilenameForInputAs#1Input#1,s1,s2MsgBox“S1=”&s1&“S2=”&s2‘結(jié)果是“S1=OneS2=Two“Close#1OpenfilenameForInputAs#1LineInput#1,s1MsgBox“S1=”&s1‘結(jié)果是“S1=”O(jiān)ne”,”Two”,”Line1”“Close#1EndSub10.2文件操作■例【10-4】:10.2文件操作■例【10-5】:使用Input函數(shù)PrivateSubForm_Click()DimfilenameAsStringfilename=”c:\testfile.txt”O(jiān)penfilenameForOutputAs#1Print#1,”ABC大寫(xiě)字母排排坐”

Close#1OpenfilenameForInputAs#1MsgBoxInput(7,1)‘結(jié)果是“ABC大寫(xiě)字母”而不是“ABC大寫(xiě)”Close#1EndSub10.2文件操作■10.2.3隨機(jī)文件

這個(gè)類(lèi)型文件的特點(diǎn)就是每個(gè)字段都具有固定的長(zhǎng)度,針對(duì)這個(gè)特征,就可以使用隨機(jī)存取的文件來(lái)保存這些信息。隨機(jī)存取的文件是由記錄構(gòu)成的,每個(gè)隨機(jī)文件的記錄都是由定長(zhǎng)的字段構(gòu)成,所以每個(gè)記錄的長(zhǎng)度也都相同,利用這一點(diǎn),就可以很方便地找到某個(gè)特定記錄的某個(gè)字段。

“記錄”是VisualBasic中的用戶自定義的數(shù)據(jù)類(lèi)型。在程序中使用記錄類(lèi)型數(shù)據(jù)時(shí),應(yīng)先定義一個(gè)記錄類(lèi)型,再聲明該類(lèi)型的變量,這樣就為這個(gè)變量申請(qǐng)了內(nèi)存空間用于存放隨機(jī)文件中的記錄。10.2文件操作■10.2.3隨機(jī)文件

1.記錄類(lèi)型

(1)記錄類(lèi)型的定義格式:

Type<記錄類(lèi)型名><數(shù)據(jù)項(xiàng)名1>As<類(lèi)型><數(shù)據(jù)項(xiàng)名2>As<類(lèi)型>……EndType

其中,記錄類(lèi)型名是用戶自定義類(lèi)型的名稱(chēng),數(shù)據(jù)項(xiàng)名是用戶自定義類(lèi)型中元素的名稱(chēng),記錄類(lèi)型名和數(shù)據(jù)項(xiàng)名的命名規(guī)則與變量的命名規(guī)則相同。

(2)記錄類(lèi)型變量的訪問(wèn)形式為:

<記錄變量名>[(i)].<數(shù)據(jù)項(xiàng)名>

其中,若使用(i),表示訪問(wèn)該記錄類(lèi)型數(shù)組的第i個(gè)元素。10.2文件操作■10.2.3隨機(jī)文件2.隨機(jī)文件的打開(kāi)與關(guān)閉在對(duì)一個(gè)隨機(jī)文件操作之前,也必須用Open語(yǔ)句打開(kāi)文件,隨機(jī)文件的打開(kāi)方式必須是Random方式,同時(shí)要指明記錄的長(zhǎng)度。與順序文件不同的是,隨機(jī)文件打開(kāi)后,可同時(shí)進(jìn)行寫(xiě)入與讀出操作。Open語(yǔ)句的格式:Open文件名ForRandomAs#文件號(hào)Len=記錄長(zhǎng)度因?yàn)镽andom是Open語(yǔ)句缺省的訪問(wèn)類(lèi)型,所以ForRandom關(guān)鍵字是可選項(xiàng)。隨機(jī)文件的關(guān)閉同順序文件一樣,使用Close語(yǔ)句。10.2文件操作■10.2.3隨機(jī)文件3.隨機(jī)文件的寫(xiě)入操作向隨機(jī)文件寫(xiě)數(shù)據(jù)用Put語(yǔ)句。格式:Put[#]文件號(hào),[記錄號(hào)],記錄變量說(shuō)明:“#”、“記錄號(hào)”是可選的。該語(yǔ)句是將一個(gè)記錄變量的內(nèi)容寫(xiě)入所打開(kāi)的磁盤(pán)文件中指定的記錄位置處。記錄號(hào)是1~231-1的整數(shù),表示寫(xiě)入的是指定記錄號(hào)的記錄;若不指定記錄號(hào),則表示將變量?jī)?nèi)容寫(xiě)在下一記錄位置。4.隨機(jī)文件的讀出操作使用Get語(yǔ)句從隨機(jī)文件讀取數(shù)據(jù)。格式:Get[#]文件號(hào),[記錄號(hào)],記錄變量說(shuō)明:記錄變量的數(shù)據(jù)類(lèi)型必須同文件中記錄的數(shù)據(jù)類(lèi)型一致。該語(yǔ)句是從磁盤(pán)文件將一條由記錄號(hào)指定的記錄內(nèi)容讀入記錄變量中。10.2文件操作■例【10-6】:隨機(jī)文件的讀寫(xiě)操作PrivateTypeStructStudentNameAsString*16AgeAsIntegerMarkAsDoubleEndTypePrivateSubForm_Paint()DimOneStudentAsStructStudentDimtheStudentAsStructStudentDimfilenameAsStringfilename=”c:\testfile.txt”O(jiān)neStudent.Name=”張力”

OneStudent.Age=19OneStudent.Mark=79.510.2文件操作■例【10-6】:

OpenfilenameForRandomAs#1Len=Len(OneStudent)Put#1,1,OneStudentOneStudent.Name=”王五”

OneStudent.Age=18

OneStudent.Mark=80.23Put#1,2,OneStudentGet#1,1,theStudentClose#1ClsPrinttheStudent.Name;theStudent.Age;theStudent.MarkEndSub10.2文件操作■例【10-7】:建立一個(gè)學(xué)生記錄的隨機(jī)文件,通過(guò)點(diǎn)擊按鈕能夠?qū)崿F(xiàn)對(duì)記錄的隨時(shí)添加、刪除和修改操作。10.2文件操作■10.2.4二進(jìn)制文件

二進(jìn)制文件可以被看作是字節(jié)的順序排列,以字節(jié)為最小定位單位,可以從文件中任何一個(gè)字節(jié)處開(kāi)始讀/寫(xiě)。1.二進(jìn)制文件的打開(kāi)(建立)

打開(kāi)二進(jìn)制文件使用的Open語(yǔ)句形式為:

Open<文件名>ForBinaryAs<文件號(hào)>

文件剛被打開(kāi)時(shí),文件指針指向第一個(gè)字節(jié),以后將隨著文件處理命令的執(zhí)行而移動(dòng)。

2.寫(xiě)/讀二進(jìn)制文件二進(jìn)制文件打開(kāi)后,可同時(shí)進(jìn)行讀/寫(xiě)操作,二進(jìn)制文件讀寫(xiě)也使用Get和Put語(yǔ)句,只不過(guò)不再指定記錄號(hào),而是指定要處理的位置(字節(jié)數(shù))。格式:Put|Get[#]<文件號(hào)>,[<位置>],<變量名>其中變量名參數(shù)可以是任何類(lèi)型的變量,包括可變長(zhǎng)度的字符串以及用戶自定義的類(lèi)型。10.2文件操作■例【10-8】:二進(jìn)制文件的讀寫(xiě)操作PrivateSubForm_Paint()DimfilenameAsStringfilename=”c:\testfile.txt”Dimm1AsStringDimn1AsLongn1=12345OpenfilenameForBinaryAs#1Put#1,1,n1Put#1,,”ABC”Get#1,1,n1m1=Input(3,#1)Close#1ClsPrintn1,m1EndSub10.2文件操作■10.2.5文件操作的相關(guān)函數(shù)和語(yǔ)句

1.FreeFile函數(shù)。格式:FreeFile[(n)]

功能:返回一個(gè)可用的文件號(hào)。

2.EOF(EndofFile)函數(shù)。格式:EOF(<文件號(hào)>)

功能:返回一個(gè)邏輯值,表示“文件號(hào)”所指定文件的指針是否到達(dá)文件末尾。3.LOF(LengthOfFile)函數(shù)。格式:LOF(<文件號(hào)>)

功能:返回一個(gè)長(zhǎng)整型數(shù),表示打開(kāi)的文件的大小,該大小以字節(jié)為單位。10.2文件操作■10.2.5文件操作的相關(guān)函數(shù)和語(yǔ)句4.Loc(Location)函數(shù)。格式:Loc(<文件號(hào)>)

功能:返回一個(gè)長(zhǎng)整型數(shù),表示文件當(dāng)前的讀/寫(xiě)位置。5.Seek語(yǔ)句和Seek函數(shù)。

Seek語(yǔ)句格式:Seek#<文件號(hào)>,<位置>

功能:設(shè)置“文件號(hào)”所指定文件中下一個(gè)讀或?qū)懙奈恢谩?/p>

Seek函數(shù)格式:Seek(<文件號(hào)>)

功能:返回已打開(kāi)文件的下一次要讀寫(xiě)的位置。6.FileCopy語(yǔ)句的作用是復(fù)制一個(gè)文件。格式:FileCopy源文件名目標(biāo)文件名7.Kill語(yǔ)句的作用是刪除文件。格式:Kill文件名10.2文件操作■10.2.5文件操作的相關(guān)函數(shù)和語(yǔ)句8.Name語(yǔ)句的作用是重命名一個(gè)文件或目錄。格式:Name舊文件名新文件名9.ChDrive語(yǔ)句的作用是改變當(dāng)前驅(qū)動(dòng)器。格式:ChDrive驅(qū)動(dòng)器10.MkDir語(yǔ)句的功能是創(chuàng)建一個(gè)新的目錄。格式:MkDir文件夾名11.ChDir語(yǔ)句的功能是改變當(dāng)前目錄。格式:ChDir文件夾名12.RmDir語(yǔ)句的功能是刪除一個(gè)存在的目錄。格式:RmDir文件夾名10.3文件控件■3個(gè)文件系統(tǒng)控件驅(qū)動(dòng)器列表框(DriveListBox)目錄列表框(DirListBox)文件列表框(FileListBox)10.3文件控件■10.3.1驅(qū)動(dòng)器列表框驅(qū)動(dòng)器列表框是下拉式列表框,默認(rèn)情況下顯示用戶系統(tǒng)的當(dāng)前驅(qū)動(dòng)器。運(yùn)行時(shí),用戶可輸入任何有效的驅(qū)動(dòng)器標(biāo)識(shí)符,或者單擊驅(qū)動(dòng)器列表框右側(cè)的箭頭,從下拉出的驅(qū)動(dòng)器列表中,用戶可選擇有效驅(qū)動(dòng)器的標(biāo)識(shí)符,被選中的驅(qū)動(dòng)器將出現(xiàn)在列表框的頂端。如圖所示。圖10-6驅(qū)動(dòng)器列表框

在運(yùn)行狀態(tài)下可以使用賦值語(yǔ)句給Drive屬性賦值:

<驅(qū)動(dòng)器列表框名>.Drive[=<驅(qū)動(dòng)器名>]驅(qū)動(dòng)器列表框的基本事件是Change事件,在程序運(yùn)行時(shí),當(dāng)選擇一個(gè)新的驅(qū)動(dòng)器或通過(guò)代碼改變Drive屬性的設(shè)置時(shí),都會(huì)觸發(fā)驅(qū)動(dòng)器列表框的Change事件發(fā)生。10.3文件控件■10.3.2目錄列表框在窗體中添加目錄列表框控件,以便當(dāng)程序運(yùn)行時(shí)顯示當(dāng)前驅(qū)動(dòng)器上的目錄列表。這個(gè)目錄列表包

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論