




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1,第十章,文件,1. 掌握文件系統(tǒng)控件(驅(qū)動(dòng)器列表框drvDrive、目錄列表框dirDirectory、文件列表框filFile。 2. 掌握VB中文件的概念、種類及其結(jié)構(gòu); 3. 掌握順序文件的操作:打開、讀/寫、關(guān)閉; 4.了解隨機(jī)文件的、二進(jìn)制文件操作:打開、讀/寫、關(guān)閉; 5.了解使用FileSystem Object (FSO) 對(duì)象模型對(duì)文件進(jìn)行操作的一些基礎(chǔ)知識(shí),本章內(nèi)容及要求:,本章重點(diǎn): 1. 文件系統(tǒng)控件驅(qū)動(dòng)器列表框、目錄列表框、文件列表框的使用 2. 順序文件的操作:打開、讀/寫、關(guān)閉;,本章難點(diǎn): 隨機(jī)文件、二進(jìn)制文件的操作,F(xiàn)ileSystem Object (F
2、SO) 對(duì)象模型。,2,10.1 文件的概念,1.文件及其結(jié)構(gòu) 文件:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。按名存取 磁盤文件是由數(shù)據(jù)記錄組成。記錄是計(jì)算機(jī)處理數(shù)據(jù)的基本單位,它由一組具有共同屬性相互關(guān)聯(lián)的數(shù)據(jù)項(xiàng)組成。,數(shù)據(jù)項(xiàng),3,2.文件分類,根據(jù)訪問文件的方式將文件分成3類: 順序文件 隨機(jī)文件 二進(jìn)制文件。,(1)順序文件 順序文件(Sequential File)是普通的文本文件。順序文件中的記錄按順序一個(gè)接一個(gè)地排列。讀寫文件存取記錄時(shí),都必須按記錄順序逐個(gè)進(jìn)行。一行一條記錄(一項(xiàng)數(shù)據(jù)),記錄可長可短,以“換行”字符為分隔符號(hào)。,4,(2)隨機(jī)文件 隨機(jī)文件(Random Access Fil
3、e)是可以按任意次序讀寫的文件,其中每個(gè)記錄的長度必須相同。在這種文件結(jié)構(gòu)中,每個(gè)記錄都有其唯一的一個(gè)記錄號(hào),所以在讀取數(shù)據(jù)時(shí),只要知道記錄號(hào),便可以直接讀取記錄。,隨機(jī)文件的文件結(jié)構(gòu),5,(3)二進(jìn)制文件 二進(jìn)制文件(Binaryfile)是字節(jié)的集合、它直接把二進(jìn)制碼存放在文件中。 除了沒有數(shù)據(jù)類型或者記錄長度的含義以外,它與隨機(jī)訪問很相似。 二進(jìn)制訪問模式是以字節(jié)數(shù)來定位數(shù)據(jù),在程序中可以按任何方式組織和訪問數(shù)據(jù),對(duì)文件中各字節(jié)數(shù)據(jù)直接進(jìn)行存取。,6,10.2 文件系統(tǒng)控件,VB提供了3種可直接瀏覽系統(tǒng)目錄結(jié)構(gòu)和文件的控件: 驅(qū)動(dòng)器列表框、目錄列表框、文件列表框。,7,1. 驅(qū)動(dòng)器列表框
4、(DriveListBox) 驅(qū)動(dòng)器列表框(DriveListBox) 控件,通常只顯示當(dāng)前驅(qū)動(dòng)器名稱,單擊向下箭頭,就會(huì)下拉出計(jì)算機(jī)擁有的所有磁盤驅(qū)動(dòng)器,供用戶選擇。,(1)重要屬性,Drive屬性是驅(qū)動(dòng)器列表框控件最重要和常用的屬性,該屬性在設(shè)計(jì)時(shí)不可用。,使用格式: object.Drive = 例如: Drive1.drive=“D:”,8,(2)重要事件Change事件,在程序運(yùn)行時(shí),當(dāng)選擇一個(gè)新的驅(qū)動(dòng)器或通過代碼改變Drive屬性的設(shè)置時(shí)都會(huì)觸發(fā)驅(qū)動(dòng)器列表框的change事件發(fā)生。,2 . 目錄列表框(DirListBox),目錄列表框(DirListBox) 控件用來當(dāng)前驅(qū)動(dòng)器目
5、錄結(jié)構(gòu)及當(dāng)前目錄下的所有子文件夾(子目錄)。供用戶選擇其中一個(gè)目錄為當(dāng)前目錄。,9,(1)常用屬性 Path屬性是目錄列表框控件的最常用的屬性,用于返回或設(shè)置當(dāng)前路徑。該屬性在設(shè)計(jì)時(shí)是不可用的。 使用格式:Object.Path = 其中: Object:對(duì)象表達(dá)式,其值是目錄列表框的對(duì)象名。 :用來表示路徑名的字符串表達(dá)式。 例如,Dir1.Path= C:Mydir。 缺省值是當(dāng)前路徑。,說明: Path屬性也可以直接設(shè)置限定的網(wǎng)絡(luò)路徑 如,網(wǎng)絡(luò)計(jì)算機(jī)名共享目錄名path,10,List、ListCount 和 ListIndex等屬性,這些屬性與列表框(ListBox)控件基本相同。,目
6、錄列表框中的當(dāng)前目錄的ListIndex 值為-1。緊鄰其上的目錄具有 ListIndex 值為-2,再上一個(gè)的ListIndex值為-3,如右圖所示。,(2)重要事件Change事件 與驅(qū)動(dòng)器列表框一樣,在程序運(yùn)行時(shí),每當(dāng)改變當(dāng)前目錄,即目錄列表框的Path屬性發(fā)生變化時(shí),都要觸發(fā)其Change事件發(fā)生。,11,文件列表框(FileListBox)控件用來顯示 Path 屬性指定的目錄中的文件定位并列舉出來。該控件用來顯示所選擇文件類型的文件列表。,3. 文件列表框(FilelistBox),(1)常用屬性,1)Path屬性 用于返回和設(shè)置文件列表框當(dāng)前目錄,設(shè)計(jì)時(shí)不可用。 說明:當(dāng)Path
7、值的改變時(shí),會(huì)引發(fā)一個(gè)PathChange事件。,12,此條件也可改為:Len(file1.path)3,2)Filename屬性 用于返回或設(shè)置被選定文件的文件名,設(shè)計(jì)時(shí)不可用。 說明:Filename屬性不包括路徑名。,例如:要從文件列表框(File1)中獲得全路徑的文件名Fname$,用下面的程序代碼: If Right(file1.path,1) = Then Fname$=file1.path *.Doc “ File1.Pattern= ?.txt“ 注意:要指定顯示多個(gè)文件類型,使用“;”為分隔符 重新設(shè)置Pattern屬性引發(fā)“PatternChange”事件。,14,4)文件
8、屬性: Archive:True,只顯示文檔文件; Normal:True,只顯示正常標(biāo)準(zhǔn)文件; Hidden:True,只顯示隱含文件; System:True,只顯示系統(tǒng)文件。 ReadOnly:True,只顯示只讀文件。,5)MultiSelect 屬性 文件列表框MultiSelect 屬性與ListBox控件中MultiSelect 屬性使用完全相同。默認(rèn)情況是0,即不允許選取多項(xiàng)。,15,6)List、ListCount 和 ListIndex 屬性 文件列表框中的List、ListCount 和 ListIndex 屬性與列表框(ListBox)控件的List、ListCount
9、 和 ListIndex 屬性的含義和使用方法相同,在程序中對(duì)文件列表框中的所有文件進(jìn)行操作,就有用到這些屬性。 例如,下段程序是將文件列表框(File1)中的所有文件名顯示在窗體上。 For i = 0 To File1.ListCount - 1 Print File1.List(i) Next i,16,(2) 主要事件 1)PathChange事件 當(dāng)路徑被代碼中FileName或Path屬性的設(shè)置所改變時(shí),此事件發(fā)生。 說明:可使用PathChange事件過程來響應(yīng)FileListBox控件中路徑的改變。當(dāng)將包含新路徑的字符串給FileName屬性賦值時(shí),F(xiàn)ileListBox控件就
10、調(diào)用PathChange事件過程。 2)PatternChange事件 當(dāng)文件的列表樣式,如:*.*,被代碼中對(duì)FileName或Path屬性的設(shè)置所改變時(shí),此事件發(fā)生。 說明:可使用PatternChange事件過程來響應(yīng)在FileListBox控件中樣式的改變。,17,3) Click、DblClick事件: 例如:單擊輸出文件名。 Sub filFile_Click( ) MsgBox filFile.FileName End Sub 例如:雙擊執(zhí)行可執(zhí)行程序 Sub File1_DblClick( ) Dim Fname As String If Right(file1.path,1)
11、 = Then Fname=file1.path Next i Close #1,24,(3) 順序文件讀操作 從現(xiàn)存文件中讀入數(shù)據(jù),應(yīng)以順序Input方式打開該文件。然后使用 Input# 語句、Line Input# 語句和Input( )函數(shù)讀入到程序變量中。 使用格式如下: INPUT #文件號(hào),變量列表 把讀出的每個(gè)數(shù)據(jù)項(xiàng)分別存放到所對(duì)應(yīng)的變量。 LINE INPUT #文件號(hào),字符串變量 讀一行到變量中,主要用來讀取文本文件。 INPUT$(讀取字符數(shù), #文件號(hào)) 讀取指定的數(shù)量的字符,作為函數(shù)的返回值。,25,與讀文件操作有關(guān)的幾個(gè)函數(shù) 1)Lof 函數(shù) LOF函數(shù)將返回某文件
12、的字節(jié)數(shù)。例如,LOF(1)返回#1文件的長度,如果返回0值,則表示該文件是一個(gè)空文件。 2)Loc 函數(shù) Loc函數(shù)將返回在一個(gè)打開文件中讀寫的記錄號(hào);對(duì)于二進(jìn)制文件,它將返回最近讀寫的一個(gè)字節(jié)的位置。 3)Eof 函數(shù) Eof 函數(shù)將返回一個(gè)表示文件指針是否到達(dá)文件末尾的標(biāo)志。如果到了文件末尾,Eof 函數(shù)返回TRUE(-1),否則返回FALSE(0)。,26,例 編程將一文本文件的內(nèi)容讀到文本框 假定文本框名稱為txtTest,文件名為MYFILE.TXT??梢酝ㄟ^下面三種方法來實(shí)現(xiàn)。 方法1:一行一行讀 txtTest.Text Open MYFILE.TXT For Input As
13、 #1 Do While Not EOF(1) Line Input #1, InputData txtTest.Text txtTest.Text + InputData+vbCrLf Loop Close #1,回車換行,27,方法2:一次性讀 txtTest.Text Open MYFILE.TXT For Input As #1 txtTest.Text = Input( LOF(1),1) Close #1 方法3:一個(gè)個(gè)字符讀 Dim InputData as String*1 txtTest.Text Open MYFILE.TXT For Input As #1 Do Whil
14、e Not EOF(1) Input #1, InputData txtTest.Text txtTest.Text + InputData Loop Close #1,28,例 利用文件系統(tǒng)控件、組合框、文本框,制作一個(gè)文件瀏覽器。 要求:組合框限定文件列表框中顯示文件的類型,如選定“*.Txt”文件。當(dāng)在文件列表框選定欲顯示的文件時(shí),在文本框顯示出該文件的內(nèi)容。,程序運(yùn)行效果如圖,29,10.4 隨機(jī)文件,1.隨機(jī)文件的打開與關(guān)閉 (1)打開隨機(jī)文件 打開隨機(jī)文件格式為: OPEN FileName FOR Random Access Lock As filenumber Len = re
15、clength,用OPEN命令以Random模式打開隨機(jī)文件,同時(shí)指出記錄的長度。文件打開后,可同時(shí)進(jìn)行讀寫操作。,例如: Open d:abc.dat For Random Access Read As #1 Len = 20,30,(2)關(guān)閉隨機(jī)文件 隨機(jī)文件的關(guān)閉與關(guān)閉順序文件相同。 2. 寫隨機(jī)文件 Put #文件號(hào),記錄號(hào),變量名 將一個(gè)記錄變量的內(nèi)容寫到指定的記錄位置處。 忽略記錄號(hào),則表示在當(dāng)前記錄后的位置插入一條記錄。 3. 讀隨機(jī)文件 Get #文件號(hào),記錄號(hào),變量名 忽略記錄號(hào),則讀出當(dāng)前記錄后的那一條記錄。,31,例 設(shè)計(jì)一個(gè)簡單的學(xué)生成績管理程序,使用隨機(jī)文件存儲(chǔ)學(xué)生信
16、息。程序的運(yùn)行界面下圖所示,該程序的具有數(shù)據(jù)添加、修改、刪除及學(xué)生信息順序查詢等功能。,32,在標(biāo)準(zhǔn)模塊Module1中定義學(xué)生信息數(shù)據(jù)類型及全局變量: Type Student 定義學(xué)生信息記錄類型 Id As String * 8 Name As String * 10 Class As String * 10 Subject As String * 20 Mark(1 To 3) As Integer End Type 定義Student類型的變量存放當(dāng)前記錄內(nèi)容 Public Stu As Student Public Filename As String 定義變量存放學(xué)生信息文件名
17、Public Rec_no As Integer 定義變量存放當(dāng)前記錄號(hào) Public Rec_total As Integer 定義變量存放總記錄數(shù) Public Rec_long As Integer 定義變量存放記錄長度,33,1. 打開文件 Open 文件名 For Binary As #文件號(hào) 2. 寫操作 Put #文件號(hào),位置,變量名 寫入長度等于變量長度的數(shù)據(jù)。 3. 讀操作 GET #文件號(hào),位置,變量名 從指定位置開始讀出長度等于變量長度的數(shù)據(jù)存入變量中,數(shù)據(jù)讀出后移動(dòng)變量長度位置,如果忽略位置,則表示從文件指針?biāo)傅奈恢瞄_始讀出數(shù)據(jù),數(shù)據(jù)讀出后移動(dòng)變量長度位置。,10.5
18、 二進(jìn)制文件,34,例 編程序?qū)崿F(xiàn)將D盤根目錄中的文件Abc.dat復(fù)制到A盤,且文件名改為Myfile.dat。 Dim char As Byte 打開源文件 Open D:Abc.dat For Binary As # 1 打開目標(biāo)文件 Open A:Myfile.dat For Binary As # 2 Do While Not EOF(1) Get #1, , char 從源文件讀出一個(gè)字節(jié) Put #2, , char 將一個(gè)字節(jié)寫入目標(biāo)文件 Loop Close#1, #2,35,10.6 常用的文件操作語句和函數(shù),(1) 改變當(dāng)前驅(qū)動(dòng)器(ChDrive 語句) 格式:ChDri
19、ve drive 功能:改變當(dāng)前驅(qū)動(dòng)器。 說明: 如果drive為“”,則當(dāng)前驅(qū)動(dòng)器將不會(huì)改變;如果drive中有多個(gè)字 符,則ChDrive只會(huì)使用首字母。 例如:ChDrive D 及ChDrive D: 和ChDrive Dasd 都是將當(dāng)前驅(qū)動(dòng)器設(shè)為D盤。,1. 文件操作語句,36,(2) 改變當(dāng)前目錄(ChDir 語句) 格式:ChDir path 功能:改變當(dāng)前目錄。 例如:ChDir D:TMP 說明:ChDir語句改變?nèi)笔∧夸浳恢茫粫?huì)改變?nèi)笔◎?qū)動(dòng)器位置。例如,如果缺省的驅(qū)動(dòng)器是C,則上面的語句將會(huì)改變驅(qū)動(dòng)器D上的缺省目錄,但是C仍然是缺省的驅(qū)動(dòng)器: (3) 刪除文件(Kil
20、l語句) 格式:Kill pathname 功能:刪除文件。 說明:pathname中可以使用統(tǒng)配符“*”和“?”。 例如:Kill *.TXT Kill C:MydirAbc.dat,37,(4) 建立(MkDir 語句)和刪除(RmDir 語句)目錄 建立目錄格式:MkDir path 功能:創(chuàng)建一個(gè)新的目錄。 例如: MkDir D:MydirABC 刪除目錄格式:RmDir path 功能:刪除一個(gè)存在的目錄。 說明:只能刪除空目錄。例如: RmDir D:MydirABC“ 說明: RmDir只能刪除空子目錄,如果想要使用RmDir來刪除一個(gè)含有文件的目錄或文件夾,則會(huì)發(fā)生錯(cuò)誤。,3
21、8,(5)拷貝文件 FileCopy語句 格式:FileCopy source , destination 功能:復(fù)制一個(gè)文件。例如: FileCopy D:MydirTest.doc A:MyTest.doc 說明: FileCopy語句不能復(fù)制一個(gè)已打開的文件。 (6)文件的更名 Name 語句 格式:Name oldpathname As newpathname 功能:重新命名一個(gè)文件或目錄。例: Name D:MydirTest.doc As A:MyTest.doc 說明:(1) Name具有移動(dòng)文件的功能。 (2) 不能使用統(tǒng)配符“*”和“?”,不能對(duì)一個(gè)已打開的文件上使用Name
22、語句。,39,(7)設(shè)置文件屬性SetAttr 語句 格式: SetAttr FileName, attributes 其參數(shù)含義: FileName:必要參數(shù)。一個(gè)文件名的字符串表達(dá)式。 Attributes:必要參數(shù)。常數(shù)或數(shù)值表達(dá)式,其總和用來表示文件的屬性。Attributes參數(shù)設(shè)置下表:,40,(1) 獲得當(dāng)前目錄CurDir函數(shù) 格式:CurDir(drive) 功能:利用CurDir函數(shù)可以確定指定驅(qū)動(dòng)器的當(dāng)前目錄。 說明:可選的Drive參數(shù)是一個(gè)字符串表達(dá)式,它指定一個(gè)存在的驅(qū)動(dòng)器。如果沒有指定驅(qū)動(dòng)器,或Drive是零長度字符串(“”),則CurDir會(huì)返回當(dāng)前驅(qū)動(dòng)器的路徑
23、。 例如: str=CurDir(“C:”) 獲得C盤當(dāng)前目錄路徑,并賦值給變量Str,2. 文件操作函數(shù),41,(2) 獲得文件屬性GetAttr函數(shù)。 格式:GetAttr(FileName) 功能:返回代表一個(gè)文件、目錄、或文件夾的屬性的Integer數(shù)據(jù)。GetAttr返回的值及代表的含義下表,42,3. FileDateTime函數(shù) 格式:FileDateTime(FileName) 功能:返回一個(gè)Variant (Date),此值為一個(gè)文件被創(chuàng)建或最后修改后的日期和時(shí)間。,4FileLen函數(shù) 格式:FileLen(FileName) 功能:返回一個(gè)Long,代表一個(gè)文件的長度,單位是字節(jié)。,43,5Shell函數(shù)和Shell過程,在VB中,可以調(diào)用在DOS下或Windows下運(yùn)行的應(yīng)用程序:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟(jì)南外部董事管理辦法
- 濟(jì)南殘疾評(píng)定管理辦法
- 海南應(yīng)急工程管理辦法
- 海南省保教費(fèi)管理辦法
- ??谛^(qū)車位管理辦法
- 海員適任證書管理辦法
- 海航集團(tuán)nc管理辦法
- 消毒管理辦法處罰案由
- 深圳免檢鍋爐管理辦法
- 深圳國企設(shè)計(jì)管理辦法
- 2025年貴州省6月28日納雍事業(yè)單位教師崗考試真題及答案
- 建筑施工企業(yè)2025年半年業(yè)績總結(jié)和下半年工作計(jì)劃
- 昭通設(shè)備裝卸方案(3篇)
- 2025至2030中國港口航道工程行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2025長城汽車人才測(cè)評(píng)答案
- GA/T 1532-2018赤足足跡檢驗(yàn)技術(shù)規(guī)范
- 電氣預(yù)防性試驗(yàn)、維保方案
- 55T履帶吊拆卸、安裝方案
- 廣州大學(xué)化學(xué)化工學(xué)院化工原理課程設(shè)計(jì)
- (完整版)電子警察信號(hào)燈設(shè)計(jì)、施工方案
- 通遼市風(fēng)能資源分布與區(qū)劃
評(píng)論
0/150
提交評(píng)論