




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 文件及文件系統(tǒng)控件,8.1什么是文件 8.2對(duì)順序文件的讀寫(xiě) 8.3 對(duì)隨機(jī)文件的讀寫(xiě) 8.4 文件系統(tǒng)控件,8.1什么是文件,文件:存放在外部介質(zhì)上的數(shù)據(jù)集合。每一個(gè)文件要有一個(gè)文件名作為標(biāo)識(shí)。 多種文件分類(lèi)方法: 按照文件的內(nèi)容,可分成程序文件和數(shù)據(jù)文件兩大類(lèi) 按照文件存儲(chǔ)信息的形式可分成ASCII文件和二進(jìn)制文件 按照文件的組織形式可分成順序文件和隨機(jī)文件 按照存儲(chǔ)介質(zhì)分為光盤(pán)文件、磁盤(pán)文件、磁帶文件、打印文件等,8.1什么是文件,數(shù)據(jù)文件就是保存數(shù)據(jù)的文件。 數(shù)據(jù)文件中的數(shù)據(jù)是以“記錄”(Record)的形式組織起來(lái)的。 一個(gè)文件是由若干個(gè)記錄組成的。 一個(gè)記錄中可以包含若干數(shù)
2、據(jù)項(xiàng)。 可以認(rèn)為,由一組數(shù)據(jù)組成一個(gè)記錄,若干記錄構(gòu)成一個(gè)文件。即文件是記錄的集合,而記錄是數(shù)據(jù)項(xiàng)的集合。,8.1什么是文件,一個(gè)記錄中所包含的各數(shù)據(jù)項(xiàng)既可以是相同類(lèi)型的數(shù)據(jù),也可以是不同類(lèi)型的數(shù)據(jù)。這些數(shù)據(jù)項(xiàng)一般都是有內(nèi)在聯(lián)系的。 例如描述每個(gè)學(xué)生的信息包括學(xué)號(hào)、姓名、性別、專(zhuān)業(yè)、入學(xué)年份等數(shù)據(jù)項(xiàng)。 寫(xiě)文件:把程序中的數(shù)據(jù)保存到磁盤(pán)上的操作,即向磁盤(pán)輸出數(shù)據(jù)。 讀文件:把磁盤(pán)文件中的數(shù)據(jù)讀到計(jì)算機(jī)中的操作,即將文件讀入內(nèi)存。,8.2對(duì)順序文件的讀寫(xiě),順序存取文件(Sequence Access File)簡(jiǎn)稱(chēng)順序文件。 順序文件中各記錄的寫(xiě)入順序、在文件中存放的順序和從文件中讀出的順序三者一
3、致。即最先寫(xiě)入的記錄放在最前面,也最早被讀出。 從順序文件中讀取記錄必須從第一個(gè)記錄讀起,順序進(jìn)行。,8.2.1 順序文件的打開(kāi)和關(guān)閉,操作文件之前,必須用Open語(yǔ)句打開(kāi)文件,操作完成后,用Close語(yǔ)句將其關(guān)閉。 1Open語(yǔ)句的格式 Open語(yǔ)句的一般格式: Open For 打開(kāi)方式 As # 其中:文件名指欲打開(kāi)文件的名字。 For引導(dǎo)的短語(yǔ)指明文件的打開(kāi)方式,三種方式。 (1)Input方式:文件只用來(lái)向計(jì)算機(jī)輸入數(shù)據(jù),即從所打開(kāi)的文件中讀取數(shù)據(jù)。,8.2.1 順序文件的打開(kāi)和關(guān)閉,(2)Output方式: 向文件寫(xiě)數(shù)據(jù),即從計(jì)算機(jī)向所打開(kāi)的文件寫(xiě)數(shù)據(jù)。如果該文件中原來(lái)已有數(shù)據(jù),則
4、原有數(shù)據(jù)被刪除,即新寫(xiě)的數(shù)據(jù)將已有的數(shù)據(jù)覆蓋。 (3)Append方式: 向文件添加數(shù)據(jù),即從計(jì)算機(jī)向所打開(kāi)的文件寫(xiě)數(shù)據(jù)。Append方式把新的數(shù)據(jù)添加到文件尾部原有數(shù)據(jù)的后邊,文件中原有數(shù)據(jù)保留。 As引導(dǎo)的短語(yǔ)為打開(kāi)的文件指定一個(gè)文件號(hào)。#號(hào)是可選項(xiàng)。文件號(hào)是1511之間的整數(shù)。文件號(hào)代表所打開(kāi)的文件,在程序中可以直接引用文件號(hào)來(lái)替代文件名。,8.2.1 順序文件的打開(kāi)和關(guān)閉,Open語(yǔ)句的示例: 打開(kāi)一個(gè)名為Employee.dat的文件,打開(kāi)的方式為Output方式,即向Employee.dat文件進(jìn)行寫(xiě)操作。指定在程序中以文件號(hào)“1”代表該文件。,Open “Employee.dat
5、” For Output As #1,Open “Leader.dat” For Input As #10,打開(kāi)一個(gè)名為L(zhǎng)eader.dat的文件,打開(kāi)方式為Input方式,即從Leader.dat中讀入數(shù)據(jù),文件號(hào)為10。,8.2.1 順序文件的打開(kāi)和關(guān)閉,Open命令中的文件名可以是變量,例如: Filenm=“FirstFile.txt” Open Filenm For Append As #2 上述兩條語(yǔ)句的作用是打開(kāi)一個(gè)文件名為FirstFile.txt的文本文件,并準(zhǔn)備進(jìn)行增添數(shù)據(jù)的操作,文件號(hào)為2。 文件名可以是一個(gè)已被賦值的字符串變量。,8.2.1 順序文件的打開(kāi)和關(guān)閉,2Cl
6、ose語(yǔ)句的格式 Close語(yǔ)句的作用是關(guān)閉先前所打開(kāi)的文件。若不關(guān)閉,會(huì)影響后續(xù)對(duì)文件的使用。一般格式如下: Close 文件號(hào)表列 其中:文件號(hào)是Open語(yǔ)句中指定的文件號(hào)。例: Close #2 使用一條Close語(yǔ)句,可以同時(shí)關(guān)閉多個(gè)文件,例: Close #10,#11,#15 若Close語(yǔ)句后面省略了文件號(hào),表示關(guān)閉當(dāng)前所有被打開(kāi)的文件,即: Close,8.2.2 順序文件的寫(xiě)操作,向順序文件寫(xiě)數(shù)據(jù)的語(yǔ)句,Print和Write語(yǔ)句。 1用Print語(yǔ)句向文件寫(xiě)數(shù)據(jù) 一般格式如下: Print # ,輸出表列 其中:是在Open語(yǔ)句中所指定的文件號(hào)?!拜敵霰砹小笔侵笢?zhǔn)備寫(xiě)到文件
7、中的數(shù)據(jù),既可以是變量名,也可以是常量。各數(shù)據(jù)之間用逗號(hào)或分號(hào)隔開(kāi)。例如:,Open “c:d1.dat” For Output As #1 Print #1, “Visual”; “Basic”; “ “Computer” Close #1,8.2.2 順序文件的寫(xiě)操作,說(shuō)明:運(yùn)行程序,輸出到d1.dat文件中的內(nèi)容是: VisualBasic&Computer 4個(gè)字符串之間沒(méi)有空格相間。VB規(guī)定Print語(yǔ)句中用分號(hào)作為輸出項(xiàng)的分隔符時(shí),各數(shù)據(jù)項(xiàng)之間是沒(méi)有空格,字符連成一片。 將Print語(yǔ)句中的分號(hào)改成逗號(hào),在字符串之間增加間隔。例如,Print語(yǔ)句修改如下: Print #1, “V
8、isual”, “Basic”, “&”, “Computer” 寫(xiě)入文件的數(shù)據(jù)如下: Visual Baisc & Computer,8.2.2 順序文件的寫(xiě)操作,每執(zhí)行一次Print語(yǔ)句,向文件輸出一個(gè)記錄 順序文件中各記錄的長(zhǎng)度可以是不相同的 在執(zhí)行Print語(yǔ)句向文件輸出一個(gè)記錄后,會(huì)在輸出的數(shù)據(jù)后面自動(dòng)加上一個(gè)記錄結(jié)束標(biāo)志,表示本記錄“到此為止”,其后是下一記錄的數(shù)據(jù)。,8.2.2 順序文件的寫(xiě)操作,2用Write語(yǔ)句向文件寫(xiě)數(shù)據(jù) 用Write語(yǔ)句向文件寫(xiě)數(shù)據(jù)時(shí),能自動(dòng)地在各數(shù)據(jù)項(xiàng)之間插入逗號(hào),并給字符串加上雙引號(hào)。一般格式如下: Write # ,輸出表列 其中 “輸出表列”中各輸
9、出項(xiàng)間可以用分號(hào)、逗號(hào)或空格分隔。,Open “c:d2.dat” For Output As #2 s0$=“This is a test about file” s1$ = “Visual ” s2$ = “Basic ” s3$ = “& ” s4$ = “Computer” Write #2, s0$ Write #2, s1$ Write #2, s2$ Write #2, s3$ Write #2, s4$ Close #2,程序功能:先后向文件“d2.dat”中寫(xiě)5個(gè)記錄,每個(gè)記錄包含一個(gè)雙引號(hào)括起來(lái)的字符串。記錄,用記事本打開(kāi)文件“d2.dat”,查看文件內(nèi)容: “This i
10、s a test about file” “Visual ” “Basic ” “& ” “Computer”,8.2.2 順序文件的寫(xiě)操作,如果把5個(gè)Write合起來(lái)寫(xiě)成一個(gè)Write語(yǔ)句: Write #2, s0$, s1$, s2$, s3$, s4$ 則向文件輸出一個(gè)記錄,這個(gè)記錄包含5個(gè)數(shù)據(jù)項(xiàng),互相有逗號(hào)分隔。 “This is a test about file”,Visual , Basic , & ,Computer,8.2.2 順序文件的寫(xiě)操作,3向文件追加數(shù)據(jù) 如果要在原有數(shù)據(jù)文件中增加數(shù)據(jù),應(yīng)使用Append方式打開(kāi)文件,數(shù)據(jù)被添加在文件尾部。 注意:在Output方式
11、下進(jìn)行寫(xiě)操作時(shí),新的數(shù)據(jù)是從文件頭部開(kāi)始寫(xiě)入的,原有的文件內(nèi)容被覆蓋。,Open “c: d2.dat” For Append As #1 mystr$=“I am learning VB” Write #1, mystr$ Close #1,8.2.3 順序文件的讀操作,順序文件的讀操作:從已建好的順序文件中將數(shù)據(jù)讀入計(jì)算機(jī)中。 讀一個(gè)文件時(shí),首先要將該文件用Input方式打開(kāi)。 讀入語(yǔ)句:Input和Line Input 1用Input語(yǔ)句從文件讀入數(shù)據(jù) Input語(yǔ)句的一般格式如下: Input#, 其中: (1)變量用于存放從順序文件中讀入的數(shù)據(jù)。 (2)中的變量用逗號(hào)分開(kāi),且變量的個(gè)
12、數(shù)和類(lèi)型應(yīng)該與磁盤(pán)文件中所存儲(chǔ)的數(shù)據(jù)一致。,例如:有順序文件d2.dat,內(nèi)容如下: “Visual ” (第1個(gè)記錄) “Basic ” (第2個(gè)記錄) “& ” (第3個(gè)記錄) “Computer ” (第4個(gè)記錄),讀數(shù)據(jù)的程序如下: Private Sub cmdInput_Click() Dim s1 As String, s2 As String, s3 As String, s4 As String Open c:d2.dat For Input As #1 Input #1, s1 Input #1, s2 Input #1, s3 Input #1, s4 text1.Tex
13、t = s1 + s2 + s3 + s4 Close #1 End Sub,運(yùn)行程序,文本框中 顯示的是: Visual Basic & Computer,8.2.3 順序文件的讀操作,2用Line Input 語(yǔ)句從文件讀入數(shù)據(jù) Line Input 語(yǔ)句的作用是從打開(kāi)的順序文件中讀取一個(gè)記錄,即一行信息。一般格式如下: Line Input #, 其中:變量用來(lái)接收從順序文件中讀入的一行數(shù)據(jù)。,8.2.3 順序文件的讀操作,有數(shù)據(jù)文件“d3.dat”,內(nèi)容如下: There are some data about employeeId in the file: (第1個(gè)記錄) 100,1
14、01,260,530,999 (第2個(gè)記錄),Private Sub Command1_Click() Dim s1 As String, s2 As String Open c:d3.dat For Input As #3 Line Input #3, s1 Line Input #3, s2 Ptint s1, s2 Close #3 End Sub,運(yùn)行結(jié)果: There are some data about employeeId in the file:100,101,260,500,999,8.2.3 順序文件的讀操作,對(duì)同樣的數(shù)據(jù),使用Input語(yǔ)句讀數(shù)據(jù):,Private Su
15、b Command1_Click() Dim s1 As String, s2 As String Open c:d3.dat For Input As #3 Line Input #3, s1 Line Input #3, s2 Ptint s1, s2 Close #3 End Sub,執(zhí)行以上過(guò)程后在窗體上顯示出以下內(nèi)容: There are some data about employeeId in the file:100,8.2.3 順序文件的讀操作,觀察: 看到第一條記錄被完整讀入,而第2條記錄只讀入第1個(gè)數(shù)。 原因: 用Input語(yǔ)句進(jìn)行讀入操作時(shí),當(dāng)遇到逗號(hào)或記錄尾時(shí)就認(rèn)為一
16、個(gè)字符串結(jié)束,除非字符串用雙引號(hào)括起來(lái)。 因此,將第1條讀入s1,然后將第2條記錄中第1個(gè)逗號(hào)之前的內(nèi)容讀入s2,后面的內(nèi)容都未輸入。 Line Input語(yǔ)句讀數(shù)據(jù)時(shí)不受空格和逗號(hào)的限制,它將一行中回車(chē)之前的信息作為一個(gè)記錄一次讀入。,8.2.3 順序文件的讀操作,3用Input函數(shù)從文件中讀取數(shù)據(jù) Input函數(shù)的作用是從文件中讀取指定字?jǐn)?shù)的字符。Input函數(shù)的一般格式如下: Input(整數(shù),#) 其中:“整數(shù)”是所要讀取的字符個(gè)數(shù)。,8.2.3 順序文件的讀操作,設(shè)有一個(gè)數(shù)據(jù)文件d4.dat,文件的內(nèi)容如下: Hello! Visual Basic & Computer 現(xiàn)有如下語(yǔ)句
17、序列: 以上語(yǔ)句序列執(zhí)行的結(jié)果是:在文本框中顯示: Hello! Visual Basi Input函數(shù)中指定了只讀入18個(gè)字符 ,其他字符不被讀入。,Open “c:d4.dat” for Input As #1 mystr$=Input(18,#1) text1.text=mystr$ Close #1,8.3 對(duì)隨機(jī)文件的讀寫(xiě),隨機(jī)存取文件(Random Access File)中所有記錄的長(zhǎng)度是相同的。 整個(gè)文件如同一個(gè)二維表格,記錄中所包括各個(gè)數(shù)據(jù)項(xiàng)的長(zhǎng)度也是固定的。 例如,職工信息的文件,每個(gè)記錄有3個(gè)數(shù)據(jù)項(xiàng),分別是職工號(hào)、職工姓名和地址。,8.3.1 隨機(jī)文件的打開(kāi)和關(guān)閉,1用O
18、pen語(yǔ)句打開(kāi)隨機(jī)文件 打開(kāi)隨機(jī)文件的語(yǔ)句格式如下: Open For Random As # Len= 其中: 指要打開(kāi)的文件名稱(chēng)。 For Random 表示打開(kāi)一個(gè)隨機(jī)文件。 Len用來(lái)指定記錄的長(zhǎng)度。,8.3.1 隨機(jī)文件的打開(kāi)和關(guān)閉,例如:打開(kāi)名稱(chēng)為“employee.dat”的隨機(jī)文件,指定文件號(hào)為1,記錄長(zhǎng)度是30 Open “c:employee.dat” For Random As #1 Len=30 2用Close語(yǔ)句關(guān)閉隨機(jī)文件 Close語(yǔ)句的作用及使用與順序文件的Close語(yǔ)句相同,8.3.2 對(duì)隨機(jī)文件的寫(xiě)操作,隨機(jī)文件的寫(xiě)操作使用Put語(yǔ)句。一般格式如下: Put
19、 #, 例如,有如下語(yǔ)句: Put #1,5,v1 作用是:將變量v1中的內(nèi)容輸出到1號(hào)文件中第5條記錄。v1可以是普通變量,也可以是記錄類(lèi)型變量。,8.3.2 對(duì)隨機(jī)文件的寫(xiě)操作,【例8-2】向隨機(jī)文件寫(xiě)數(shù)據(jù)。 建立一個(gè)隨機(jī)文件,文件包含職工的信息。首先用Type/End Type語(yǔ)句定義一個(gè)職工記錄類(lèi)型, 在employee結(jié)構(gòu)中包含3個(gè)成員:職工號(hào)(empNo)、職工姓名(name)和職工住址(address)。,Private Type employee empNo As Integer name As String*10 address As string*20 End Type,P
20、rivate Sub cmdPut_Click() Dim emp As employee Open App.Path & employee.dat For Random As #1 Len = len(emp) Title$ = 寫(xiě)記錄到隨機(jī)文件 Str1$ = 請(qǐng)輸入職工編號(hào) Str2$ = 請(qǐng)輸入職工姓名 Str3$ = 請(qǐng)輸入職工住址 For i = 1 To 3 emp.empNo = InputBox(Str1$, Title$) = InputBox$(Str2$, Title$) emp.address = InputBox$(Str3$, Title$) P
21、ut #1, i, emp Next i Close #1 End Sub,當(dāng)前路徑,寫(xiě)入文件,輸入基本信息的編號(hào)、姓名、地址,8.3.2 對(duì)隨機(jī)文件的寫(xiě)操作,App是系統(tǒng)的內(nèi)部對(duì)象。運(yùn)行應(yīng)用程序的時(shí)候,系統(tǒng)自動(dòng)生成App內(nèi)部對(duì)象,對(duì)應(yīng)于當(dāng)前正在運(yùn)行程序的十幾個(gè)屬性,包括應(yīng)用程序的標(biāo)題、可執(zhí)行文件的路徑及名稱(chēng)等。 App對(duì)象的主要屬性及含義見(jiàn)表。 App.Path是指當(dāng)前應(yīng)用程序的路徑。 App.Path & employee.dat將當(dāng)前路徑及文件一起構(gòu)成一個(gè)文件的完整路徑。,8.3.3 對(duì)隨機(jī)文件的讀操作,用Get語(yǔ)句讀取隨機(jī)文件中的記錄。一般格式如下: Get #,, 例如:有如下讀數(shù)據(jù)
22、的語(yǔ)句: Get #2,3,v1 表示將2號(hào)文件中的第3個(gè)記錄讀出并存放到變量v1中,8.3.3 對(duì)隨機(jī)文件的讀操作,【例8-3】編寫(xiě)一個(gè)過(guò)程,將【例8-2】建立的隨機(jī)文件“employee.dat”中的記錄讀出并顯示在文本框內(nèi)。,Private Sub cmdGet_Click() Dim emp As employee Open App.Path & employee.dat For Random As #1 Len = Len(emp) Get #1, 1, emp Text1.Text = Str$(emp.empNo) + + emp.address Get #1,
23、 2, emp Text2.Text = Str$(emp.empNo) + + emp.address Get #1, 3, emp Text3.Text = Str$(emp.empNo) + + emp.address Close #1 End Sub,8.4 文件系統(tǒng)控件,3種文件系統(tǒng)控件:驅(qū)動(dòng)器列表框、目錄列表框和文件列表框。 利用本章介紹的文件系統(tǒng)控件可以設(shè)計(jì)出能滿足用戶特殊要求的、具有不同界面風(fēng)格的對(duì)話框,利用這些控件,能夠編寫(xiě)不同的文件管理程序。 第9章將要介紹的通用對(duì)話框,使用系統(tǒng)提供的“打開(kāi)”(Open)、“另存為”(Save As)對(duì)話
24、框,8.4.1 驅(qū)動(dòng)器列表框,【例8-4】使用驅(qū)動(dòng)器列表框。 在窗體上添加一個(gè)名稱(chēng)為drvTest的驅(qū)動(dòng)器列表框以及一個(gè)“退出”命令按鈕。單擊驅(qū)動(dòng)器列表框中的某個(gè)驅(qū)動(dòng)器名稱(chēng)時(shí),用消息框顯示所選擇的驅(qū)動(dòng)器名稱(chēng)。,8.4.1 驅(qū)動(dòng)器列表框,當(dāng)Drive屬性值發(fā)生改變時(shí),觸發(fā)Change事件。,Private Sub drvTest_Change() MsgBox 選中的驅(qū)動(dòng)器是: + drvTest.Drive End Sub,8.4.1 驅(qū)動(dòng)器列表框,驅(qū)動(dòng)器列表框的Drive屬性用來(lái)設(shè)置或返回當(dāng)前驅(qū)動(dòng)器名稱(chēng)。 單擊列表框中某個(gè)驅(qū)動(dòng)器名稱(chēng)時(shí),該驅(qū)動(dòng)器名稱(chēng)就成為驅(qū)動(dòng)器列表框的Drive屬性值,即Dr
25、ive屬性可以用來(lái)設(shè)置當(dāng)前驅(qū)動(dòng)器,也可以接收并表示選定的驅(qū)動(dòng)器名。 Drive屬性不能在設(shè)計(jì)階段設(shè)置 ,必須在程序中賦值,如: drvTest.Drive=“c:” 其中drvTest是驅(qū)動(dòng)器列表框控件的Name屬性值。執(zhí)行此賦值語(yǔ)句后把當(dāng)前驅(qū)動(dòng)器改為“c:”。,8.4.2 目錄列表框,【例8-5】目錄列表框的使用。 調(diào)整例8-4窗體的布局,添加一個(gè)名稱(chēng)為dirTest的目錄列表框。當(dāng)選中某個(gè)驅(qū)動(dòng)器后,該驅(qū)動(dòng)器中的所有文件夾顯示在目錄列表框中,并用消息框顯示被選中的文件夾名。,8.4.2 目錄列表框,雙擊一個(gè)文件夾,把文件夾打開(kāi),觸發(fā)目錄列表框的Change 事件,事件過(guò)程如下:,Privat
26、e Sub dirTest_Change() MsgBox 選中的文件夾是: + dirTest.Path End Sub,路徑屬性Path是目錄列表框的重要屬性之一,用來(lái)設(shè)置和表示當(dāng)前的路徑。上面事件過(guò)程中的dirTest.Path就是當(dāng)前的路徑。,8.4.2 目錄列表框,到目前為止,窗體中的驅(qū)動(dòng)器列表框和目錄列表框兩個(gè)控件之間沒(méi)有任何關(guān)系。即改變驅(qū)動(dòng)器名稱(chēng)時(shí),目錄列表框中內(nèi)容不能隨之變化。 要把驅(qū)動(dòng)器列表框和目錄列表框結(jié)合起來(lái)用,使二者“同步”,代碼如下:,Private Sub drvTest_Change() dirTest.Path = drvTest.Drive End Sub,8
27、.4.3 文件列表框,【例8-6】文件列表框的使用。 在例8-5的窗體上添加名稱(chēng)為filTest的文件列表框,調(diào)整窗體的布局。編寫(xiě)程序,使目錄列表框與文件列表保持同步。 文件列表框中顯示當(dāng)前文件夾下的文件名。文件數(shù)量多時(shí),系統(tǒng)自動(dòng)添加垂直滾動(dòng)條用以瀏覽。,8.4.3 文件列表框,1利用Path屬性保持文件列表框與目錄列表框同步 文件列表框的Path屬性:指定或返回當(dāng)前文件夾。 程序運(yùn)行時(shí),當(dāng)選中目錄列表框中的一個(gè)文件夾名時(shí),使文件列表框“同步”顯示出文件夾下的文件。 文件夾的改變,觸發(fā)目錄列表框控件的Change事件。如下過(guò)程使文件列表框和目錄列表框保持同步:,Private Sub dirT
28、est_Change() filTest.Path = dirTest.Path End Sub,8.4.3 文件列表框,Path的默認(rèn)值是系統(tǒng)的當(dāng)前路徑。通過(guò)文件列表框Path屬性能夠改變當(dāng)前路徑。 執(zhí)行以下語(yǔ)句: filTest.Path = “c:vb” 指定當(dāng)前路徑為“c:vb”,文件列表框中顯示出“c:vb”文件夾中的文件名。,8.4.3 文件列表框,注意,目錄列表框和文件列表框的Path屬性含義不同。注意比較: 賦值語(yǔ)句: dirTest.Path = “c:” (目錄列表框) 其作用是在目錄列表框中顯示c盤(pán)根目錄下的目錄結(jié)構(gòu) 賦值語(yǔ)句: filTest.Path = “c:” (
29、文件列表框) 作用:在文件列表框中列出c盤(pán)根目錄下的全部文件名,在這里Path用來(lái)確定文件的路徑。,8.4.3 文件列表框,2用Filename屬性設(shè)置或返回文件名 文件列表框的Filename屬性的作用: 在運(yùn)行時(shí)設(shè)置或返回所選中的文件名。 例如,用鼠標(biāo)選中某文件時(shí),要求用MsgBox函數(shù)顯示被選中的文件。代碼如下:,Private Sub filTest_Click() MsgBox 選中的文件是: + filTest.FileName End Sub,8.4.3 文件列表框,3用Pattern屬性限制顯示文件的類(lèi)型 文件列表框控件的Pattern屬性,用來(lái)指定在文件列表框中顯示什么類(lèi)型的
30、文件。 Pattern屬性的默認(rèn)值為“*.*”,即顯示所有文件的名字。如將Pattern屬性設(shè)置為“*.frm”,則僅顯示擴(kuò)展名為.frm的文件。 Pattern屬性值可以在設(shè)計(jì)階段設(shè)置,也可以在運(yùn)行階段通過(guò)語(yǔ)句設(shè)置,如: filTest.pattern = “*.frm”,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,【例8-7】利用文件系統(tǒng)控件進(jìn)行文件操作。 利用驅(qū)動(dòng)器列表框、目錄列表框和文件列表框等三個(gè)控件,對(duì)文件進(jìn)行復(fù)制、重新命名和刪除的操作。 窗體設(shè)計(jì)如圖。,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,各控件的屬性設(shè)置如表。,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(1)裝載窗體 初始裝
31、載窗體時(shí),將當(dāng)前路徑顯示在標(biāo)簽(Label8)中。否則Label8.Caption會(huì)一直為空。 有了以上的賦值,程序開(kāi)始運(yùn)行后,圖中“當(dāng)前被搜索目錄”下面的標(biāo)簽中就會(huì)顯示當(dāng)前目錄,Private Sub Form_Load() Label8.Caption = DirList.Path End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(2)保持文件系統(tǒng)的各個(gè)控件同步 使目錄列表框與驅(qū)動(dòng)器目錄列表框同步 目錄列表框中的目錄發(fā)生改變,觸發(fā)DirList_Change事件過(guò)程,先將目錄列表框的Path屬性值賦給文件列表框的Path屬性,再將其Path屬性值賦給Label 8. Captio
32、n,Private Sub DriveList_Change() DirList.Path = DriveList.Drive End Sub,Private Sub DirList_Change() FileList.Path = DirList.Path Label8.Caption = DirList.Path End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(3)選擇文件名 設(shè)通過(guò)單擊操作來(lái)選定文件名,則相應(yīng)文件列表框的“單擊”事件過(guò)程如下。,Private Sub FileList_Click() Label4.Caption = FileList.filename If
33、Right$(DirList.Path, 1) = Then choicedFile = DirList.Path + FileList.filename Else choicedFile = DirList.Path + + FileList.filename End If End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,因要對(duì)文件進(jìn)行復(fù)制、刪除、重命名等多項(xiàng)操作,需要保存把被選中的文件名,并允許在其它事件過(guò)程中對(duì)此文件進(jìn)行操作。把文件名賦給字符串變量choicedFile。 注意:操作文件時(shí),要知道文件名和路徑。 1) 必須在文件名前加上路徑名,得到完整文件名 2)如果所選是根目
34、錄,則路徑字符串末尾有“”符號(hào),如c: 。若不是根目錄,則如:c:vb。因此需要區(qū)別處理。,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(4)確定文件列表框中顯示的文件類(lèi)型 程序允許用戶選擇在文件列表框中顯示文件的類(lèi)型(如.vbp類(lèi)型、.exe類(lèi)型等)。 在組合框Combo1中選擇需要顯示文件的類(lèi)型,所選的類(lèi)型賦給文件列表框的Pattern屬性:,Private Sub Combo1_Click() FileList.Pattern = Combo1.Text End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(5)文件的復(fù)制 單擊“復(fù)制文件”按鈕,執(zhí)行下面過(guò)程,進(jìn)行文件的復(fù)制:,Pri
35、vate Sub cmdCopy_Click() Dim sourFile As String Dim destFile As String str2$ = 請(qǐng)輸入復(fù)制目標(biāo)文件 sourFile = choicedFile destFile = InputBox$(str2$, 復(fù)制文件) If destFile Then FileCopy sourFile, destFile End If End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,FileCopy語(yǔ)句:將所選定的源文件復(fù)制到指定的目標(biāo)文件。一般格式為: FileCopy , 在本例中,目標(biāo)文件名就是輸入對(duì)話框中所指定的文件名
36、。,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(6)文件重命名-Name語(yǔ)句 一般格式是: Name As ,Private Sub cmdRename_Click() Dim oldName As String Dim newName As String Title$ = 重新命名 str1$ = 請(qǐng)輸入新文件名 Call FileList_Click msg$ = 確認(rèn)被更改的文件名 & choicedFile p = MsgBox(msg$, 35, 數(shù)據(jù)檢查框) If p = 6 Then newName = InputBox(str1$, Title$) Name choicedFi
37、le As newName MsgBox 更名完畢,新文件名是: + newName End If End Sub,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,cmdRename_Click事件過(guò)程的執(zhí)行: 1)選中需要重新命名的文件(設(shè)為Chp8.doc)。 2)調(diào)用MsgBox函數(shù)打開(kāi)一個(gè)標(biāo)題為“數(shù)據(jù)檢查框”的消息框,確認(rèn)要更改的文件名。語(yǔ)句中的35指明消息框中圖標(biāo)的樣式和按鈕個(gè)數(shù)。 choicedFile為全局變量,所有對(duì)文件列表框的單擊操作都會(huì)將所選文件的文件名賦給該變量。MsgBox返回的值放在變量p中,如果選擇“是(Y)”,p的值為6,確認(rèn)要更改的文件名是正確的。,8.4.4 利用文
38、件系統(tǒng)控件設(shè)計(jì)用戶界面,(3)用InputBox函數(shù)打開(kāi)輸入對(duì)話框,輸入新文件名。再用Name語(yǔ)句完成文件名的更改。 注意:所輸入的文件名應(yīng)該包含路徑。,修改成功后,屏幕上彈出對(duì)話框顯示新的文件名,8.4.4 利用文件系統(tǒng)控件設(shè)計(jì)用戶界面,(7)刪除文件 在VB中刪除文件用Kill語(yǔ)句,其一般格式為: Kill 刪除文件的事件過(guò)程如下: 刪除文件的事件過(guò)程如下:,Private Sub cmdKill_Click() Title$ = 數(shù)據(jù)檢查框 msg1$ = 你要?jiǎng)h除文件: & killedFile x = MsgBox(msg1$, 35, Title$) If x = 6 Then K
39、ill choicedFile End If End Sub,8.4.5 文件系統(tǒng)控件的一些屬性,驅(qū)動(dòng)器列表框、目錄列表框、文件列表框都有ListCount屬性。這個(gè)屬性與列表框控件ListCount的類(lèi)似,其作用是提供當(dāng)前列表框(驅(qū)動(dòng)器、目錄、文件列表框)控件中的項(xiàng)目數(shù)。 【例8-8】顯示當(dāng)前路徑下的文件數(shù)量。 設(shè)計(jì)窗體如圖。,8.4.5 文件系統(tǒng)控件的一些屬性,屬性設(shè)置如表:,8.4.5 文件系統(tǒng)控件的一些屬性,(1)在Form_Load中顯示初始數(shù)據(jù) 運(yùn)行程序,執(zhí)行Form_Load程序,分別在兩個(gè)標(biāo)簽中顯示當(dāng)前路徑下文件的數(shù)量和路徑的數(shù)量。,Private Sub Form_Load(
40、) lblFileCount.Caption = File1.ListCount lblPathCount.Caption = Dir1.ListCount End Sub,8.4.5 文件系統(tǒng)控件的一些屬性,(2)保持文件系統(tǒng)控件的同步 當(dāng)目錄列表框的內(nèi)容發(fā)生變化時(shí),觸發(fā)Dir1_Change事件過(guò)程,使目錄列表框與文件列表框同步。,Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub,8.4.5 文件系統(tǒng)控件的一些屬性,(3)顯示文件數(shù)和文件夾數(shù) 驅(qū)動(dòng)器列表框的內(nèi)容發(fā)生變化時(shí),觸發(fā)Drive1_Change事件過(guò)程,先使驅(qū)動(dòng)器列表
41、框和目錄列表框同步,然后,分別顯示當(dāng)前目錄列表框及文件列表框中列表項(xiàng)的數(shù)量,Private Sub Drive1_Change() Dir1.Path = Drive1.Drive lblPathCount.Caption = Dir1.ListCount lblFileCount.Caption = File1.ListCount End Sub,8.4.5 文件系統(tǒng)控件的一些屬性,當(dāng)文件列表框的路徑發(fā)生變化時(shí),同樣在標(biāo)簽中顯示相應(yīng)文件或文件夾的數(shù)量。,Private Sub File1_PathChange() lblFileCount.Caption = File1.ListCount lblPathCount.Caption = Dir1.ListCount End Sub,8.4.5 文件系統(tǒng)控件的一些屬性,VisualBasic程序設(shè)計(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ù)覽,若沒(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行與管委會(huì)合作協(xié)議
- 民宿營(yíng)銷(xiāo)活動(dòng)方案
- 機(jī)場(chǎng)航線資源共享協(xié)議
- 交易合同保密協(xié)議
- 草皮采購(gòu)施工合同
- 店鋪商鋪房屋租賃合同
- 產(chǎn)品推廣策略與技術(shù)方案介紹手冊(cè)
- 工程合同付款方式范本5篇
- 租金鏈上支付智能合約協(xié)議
- Unit 9 Can you come to my party Section A 2a - 2d 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版英語(yǔ)八年級(jí)上冊(cè)
- 浙江省重點(diǎn)中學(xué)2025屆數(shù)學(xué)高一上期末聯(lián)考試題含解析
- 廣州版四年級(jí)下冊(cè)《綜合實(shí)踐活動(dòng)》教案共享-
- 基本樂(lè)理及音樂(lè)常識(shí)類(lèi)知識(shí)考試題庫(kù)300題(含答案)
- 兩進(jìn)虎跳峽(2022年云南昆明中考語(yǔ)文試卷散文閱讀題及答案)
- 高中英語(yǔ)教學(xué):選擇性必修第三冊(cè)Unit 1 Art過(guò)關(guān)測(cè)試
- 2024年山東春季高考語(yǔ)文試題答案詳細(xì)解析
- 技能人才評(píng)價(jià)新職業(yè)考評(píng)員培訓(xùn)在線考試(四川省)
- 《有機(jī)化學(xué)》課程說(shuō)課
- 軌道電路參數(shù)與狀態(tài)課件講解
- 2024年中華人民共和國(guó)企業(yè)所得稅年度納稅申報(bào)表(帶公式)20240301更新
- 2024年安徽省高考化學(xué)試卷(真題+答案)
評(píng)論
0/150
提交評(píng)論