chapter10 文件.ppt_第1頁
chapter10 文件.ppt_第2頁
chapter10 文件.ppt_第3頁
chapter10 文件.ppt_第4頁
chapter10 文件.ppt_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第十章,文件,1. 掌握文件系統(tǒng)控件(驅(qū)動器列表框drvDrive、目錄列表框dirDirectory、文件列表框filFile。 2. 掌握VB中文件的概念、種類及其結(jié)構(gòu); 3. 掌握順序文件的操作:打開、讀/寫、關(guān)閉; 4.了解隨機文件的、二進制文件操作:打開、讀/寫、關(guān)閉; 5.了解使用FileSystem Object (FSO) 對象模型對文件進行操作的一些基礎(chǔ)知識,本章內(nèi)容及要求:,本章重點: 1. 文件系統(tǒng)控件驅(qū)動器列表框、目錄列表框、文件列表框的使用 2. 順序文件的操作:打開、讀/寫、關(guān)閉;,本章難點: 隨機文件、二進制文件的操作,F(xiàn)ileSystem Object (F

2、SO) 對象模型。,2,10.1 文件的概念,1.文件及其結(jié)構(gòu) 文件:存儲在外部介質(zhì)上數(shù)據(jù)的集合。按名存取 磁盤文件是由數(shù)據(jù)記錄組成。記錄是計算機處理數(shù)據(jù)的基本單位,它由一組具有共同屬性相互關(guān)聯(lián)的數(shù)據(jù)項組成。,數(shù)據(jù)項,3,2.文件分類,根據(jù)訪問文件的方式將文件分成3類: 順序文件 隨機文件 二進制文件。,(1)順序文件 順序文件(Sequential File)是普通的文本文件。順序文件中的記錄按順序一個接一個地排列。讀寫文件存取記錄時,都必須按記錄順序逐個進行。一行一條記錄(一項數(shù)據(jù)),記錄可長可短,以“換行”字符為分隔符號。,4,(2)隨機文件 隨機文件(Random Access Fil

3、e)是可以按任意次序讀寫的文件,其中每個記錄的長度必須相同。在這種文件結(jié)構(gòu)中,每個記錄都有其唯一的一個記錄號,所以在讀取數(shù)據(jù)時,只要知道記錄號,便可以直接讀取記錄。,隨機文件的文件結(jié)構(gòu),5,(3)二進制文件 二進制文件(Binaryfile)是字節(jié)的集合、它直接把二進制碼存放在文件中。 除了沒有數(shù)據(jù)類型或者記錄長度的含義以外,它與隨機訪問很相似。 二進制訪問模式是以字節(jié)數(shù)來定位數(shù)據(jù),在程序中可以按任何方式組織和訪問數(shù)據(jù),對文件中各字節(jié)數(shù)據(jù)直接進行存取。,6,10.2 文件系統(tǒng)控件,VB提供了3種可直接瀏覽系統(tǒng)目錄結(jié)構(gòu)和文件的控件: 驅(qū)動器列表框、目錄列表框、文件列表框。,7,1. 驅(qū)動器列表框

4、(DriveListBox) 驅(qū)動器列表框(DriveListBox) 控件,通常只顯示當(dāng)前驅(qū)動器名稱,單擊向下箭頭,就會下拉出計算機擁有的所有磁盤驅(qū)動器,供用戶選擇。,(1)重要屬性,Drive屬性是驅(qū)動器列表框控件最重要和常用的屬性,該屬性在設(shè)計時不可用。,使用格式: object.Drive = 例如: Drive1.drive=“D:”,8,(2)重要事件Change事件,在程序運行時,當(dāng)選擇一個新的驅(qū)動器或通過代碼改變Drive屬性的設(shè)置時都會觸發(fā)驅(qū)動器列表框的change事件發(fā)生。,2 . 目錄列表框(DirListBox),目錄列表框(DirListBox) 控件用來當(dāng)前驅(qū)動器目

5、錄結(jié)構(gòu)及當(dāng)前目錄下的所有子文件夾(子目錄)。供用戶選擇其中一個目錄為當(dāng)前目錄。,9,(1)常用屬性 Path屬性是目錄列表框控件的最常用的屬性,用于返回或設(shè)置當(dāng)前路徑。該屬性在設(shè)計時是不可用的。 使用格式:Object.Path = 其中: Object:對象表達式,其值是目錄列表框的對象名。 :用來表示路徑名的字符串表達式。 例如,Dir1.Path= C:Mydir。 缺省值是當(dāng)前路徑。,說明: Path屬性也可以直接設(shè)置限定的網(wǎng)絡(luò)路徑 如,網(wǎng)絡(luò)計算機名共享目錄名path,10,List、ListCount 和 ListIndex等屬性,這些屬性與列表框(ListBox)控件基本相同。,目

6、錄列表框中的當(dāng)前目錄的ListIndex 值為-1。緊鄰其上的目錄具有 ListIndex 值為-2,再上一個的ListIndex值為-3,如右圖所示。,(2)重要事件Change事件 與驅(qū)動器列表框一樣,在程序運行時,每當(dāng)改變當(dāng)前目錄,即目錄列表框的Path屬性發(fā)生變化時,都要觸發(fā)其Change事件發(fā)生。,11,文件列表框(FileListBox)控件用來顯示 Path 屬性指定的目錄中的文件定位并列舉出來。該控件用來顯示所選擇文件類型的文件列表。,3. 文件列表框(FilelistBox),(1)常用屬性,1)Path屬性 用于返回和設(shè)置文件列表框當(dāng)前目錄,設(shè)計時不可用。 說明:當(dāng)Path

7、值的改變時,會引發(fā)一個PathChange事件。,12,此條件也可改為:Len(file1.path)3,2)Filename屬性 用于返回或設(shè)置被選定文件的文件名,設(shè)計時不可用。 說明:Filename屬性不包括路徑名。,例如:要從文件列表框(File1)中獲得全路徑的文件名Fname$,用下面的程序代碼: If Right(file1.path,1) = Then Fname$=file1.path *.Doc “ File1.Pattern= ?.txt“ 注意:要指定顯示多個文件類型,使用“;”為分隔符 重新設(shè)置Pattern屬性引發(fā)“PatternChange”事件。,14,4)文件

8、屬性: Archive:True,只顯示文檔文件; Normal:True,只顯示正常標準文件; Hidden:True,只顯示隱含文件; System:True,只顯示系統(tǒng)文件。 ReadOnly:True,只顯示只讀文件。,5)MultiSelect 屬性 文件列表框MultiSelect 屬性與ListBox控件中MultiSelect 屬性使用完全相同。默認情況是0,即不允許選取多項。,15,6)List、ListCount 和 ListIndex 屬性 文件列表框中的List、ListCount 和 ListIndex 屬性與列表框(ListBox)控件的List、ListCount

9、 和 ListIndex 屬性的含義和使用方法相同,在程序中對文件列表框中的所有文件進行操作,就有用到這些屬性。 例如,下段程序是將文件列表框(File1)中的所有文件名顯示在窗體上。 For i = 0 To File1.ListCount - 1 Print File1.List(i) Next i,16,(2) 主要事件 1)PathChange事件 當(dāng)路徑被代碼中FileName或Path屬性的設(shè)置所改變時,此事件發(fā)生。 說明:可使用PathChange事件過程來響應(yīng)FileListBox控件中路徑的改變。當(dāng)將包含新路徑的字符串給FileName屬性賦值時,F(xiàn)ileListBox控件就

10、調(diào)用PathChange事件過程。 2)PatternChange事件 當(dāng)文件的列表樣式,如:*.*,被代碼中對FileName或Path屬性的設(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 #文件號,變量列表 把讀出的每個數(shù)據(jù)項分別存放到所對應(yīng)的變量。 LINE INPUT #文件號,字符串變量 讀一行到變量中,主要用來讀取文本文件。 INPUT$(讀取字符數(shù), #文件號) 讀取指定的數(shù)量的字符,作為函數(shù)的返回值。,25,與讀文件操作有關(guān)的幾個函數(shù) 1)Lof 函數(shù) LOF函數(shù)將返回某文件

12、的字節(jié)數(shù)。例如,LOF(1)返回#1文件的長度,如果返回0值,則表示該文件是一個空文件。 2)Loc 函數(shù) Loc函數(shù)將返回在一個打開文件中讀寫的記錄號;對于二進制文件,它將返回最近讀寫的一個字節(jié)的位置。 3)Eof 函數(shù) Eof 函數(shù)將返回一個表示文件指針是否到達文件末尾的標志。如果到了文件末尾,Eof 函數(shù)返回TRUE(-1),否則返回FALSE(0)。,26,例 編程將一文本文件的內(nèi)容讀到文本框 假定文本框名稱為txtTest,文件名為MYFILE.TXT??梢酝ㄟ^下面三種方法來實現(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:一個個字符讀 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)控件、組合框、文本框,制作一個文件瀏覽器。 要求:組合框限定文件列表框中顯示文件的類型,如選定“*.Txt”文件。當(dāng)在文件列表框選定欲顯示的文件時,在文本框顯示出該文件的內(nèi)容。,程序運行效果如圖,29,10.4 隨機文件,1.隨機文件的打開與關(guān)閉 (1)打開隨機文件 打開隨機文件格式為: OPEN FileName FOR Random Access Lock As filenumber Len = re

15、clength,用OPEN命令以Random模式打開隨機文件,同時指出記錄的長度。文件打開后,可同時進行讀寫操作。,例如: Open d:abc.dat For Random Access Read As #1 Len = 20,30,(2)關(guān)閉隨機文件 隨機文件的關(guān)閉與關(guān)閉順序文件相同。 2. 寫隨機文件 Put #文件號,記錄號,變量名 將一個記錄變量的內(nèi)容寫到指定的記錄位置處。 忽略記錄號,則表示在當(dāng)前記錄后的位置插入一條記錄。 3. 讀隨機文件 Get #文件號,記錄號,變量名 忽略記錄號,則讀出當(dāng)前記錄后的那一條記錄。,31,例 設(shè)計一個簡單的學(xué)生成績管理程序,使用隨機文件存儲學(xué)生信

16、息。程序的運行界面下圖所示,該程序的具有數(shù)據(jù)添加、修改、刪除及學(xué)生信息順序查詢等功能。,32,在標準模塊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)前記錄號 Public Rec_total As Integer 定義變量存放總記錄數(shù) Public Rec_long As Integer 定義變量存放記錄長度,33,1. 打開文件 Open 文件名 For Binary As #文件號 2. 寫操作 Put #文件號,位置,變量名 寫入長度等于變量長度的數(shù)據(jù)。 3. 讀操作 GET #文件號,位置,變量名 從指定位置開始讀出長度等于變量長度的數(shù)據(jù)存入變量中,數(shù)據(jù)讀出后移動變量長度位置,如果忽略位置,則表示從文件指針所指的位置開始讀出數(shù)據(jù),數(shù)據(jù)讀出后移動變量長度位置。,10.5

18、 二進制文件,34,例 編程序?qū)崿F(xiàn)將D盤根目錄中的文件Abc.dat復(fù)制到A盤,且文件名改為Myfile.dat。 Dim char As Byte 打開源文件 Open D:Abc.dat For Binary As # 1 打開目標文件 Open A:Myfile.dat For Binary As # 2 Do While Not EOF(1) Get #1, , char 從源文件讀出一個字節(jié) Put #2, , char 將一個字節(jié)寫入目標文件 Loop Close#1, #2,35,10.6 常用的文件操作語句和函數(shù),(1) 改變當(dāng)前驅(qū)動器(ChDrive 語句) 格式:ChDri

19、ve drive 功能:改變當(dāng)前驅(qū)動器。 說明: 如果drive為“”,則當(dāng)前驅(qū)動器將不會改變;如果drive中有多個字 符,則ChDrive只會使用首字母。 例如:ChDrive D 及ChDrive D: 和ChDrive Dasd 都是將當(dāng)前驅(qū)動器設(shè)為D盤。,1. 文件操作語句,36,(2) 改變當(dāng)前目錄(ChDir 語句) 格式:ChDir path 功能:改變當(dāng)前目錄。 例如:ChDir D:TMP 說明:ChDir語句改變?nèi)笔∧夸浳恢?,但不會改變?nèi)笔◎?qū)動器位置。例如,如果缺省的驅(qū)動器是C,則上面的語句將會改變驅(qū)動器D上的缺省目錄,但是C仍然是缺省的驅(qū)動器: (3) 刪除文件(Kil

20、l語句) 格式:Kill pathname 功能:刪除文件。 說明:pathname中可以使用統(tǒng)配符“*”和“?”。 例如:Kill *.TXT Kill C:MydirAbc.dat,37,(4) 建立(MkDir 語句)和刪除(RmDir 語句)目錄 建立目錄格式:MkDir path 功能:創(chuàng)建一個新的目錄。 例如: MkDir D:MydirABC 刪除目錄格式:RmDir path 功能:刪除一個存在的目錄。 說明:只能刪除空目錄。例如: RmDir D:MydirABC“ 說明: RmDir只能刪除空子目錄,如果想要使用RmDir來刪除一個含有文件的目錄或文件夾,則會發(fā)生錯誤。,3

21、8,(5)拷貝文件 FileCopy語句 格式:FileCopy source , destination 功能:復(fù)制一個文件。例如: FileCopy D:MydirTest.doc A:MyTest.doc 說明: FileCopy語句不能復(fù)制一個已打開的文件。 (6)文件的更名 Name 語句 格式:Name oldpathname As newpathname 功能:重新命名一個文件或目錄。例: Name D:MydirTest.doc As A:MyTest.doc 說明:(1) Name具有移動文件的功能。 (2) 不能使用統(tǒng)配符“*”和“?”,不能對一個已打開的文件上使用Name

22、語句。,39,(7)設(shè)置文件屬性SetAttr 語句 格式: SetAttr FileName, attributes 其參數(shù)含義: FileName:必要參數(shù)。一個文件名的字符串表達式。 Attributes:必要參數(shù)。常數(shù)或數(shù)值表達式,其總和用來表示文件的屬性。Attributes參數(shù)設(shè)置下表:,40,(1) 獲得當(dāng)前目錄CurDir函數(shù) 格式:CurDir(drive) 功能:利用CurDir函數(shù)可以確定指定驅(qū)動器的當(dāng)前目錄。 說明:可選的Drive參數(shù)是一個字符串表達式,它指定一個存在的驅(qū)動器。如果沒有指定驅(qū)動器,或Drive是零長度字符串(“”),則CurDir會返回當(dāng)前驅(qū)動器的路徑

23、。 例如: str=CurDir(“C:”) 獲得C盤當(dāng)前目錄路徑,并賦值給變量Str,2. 文件操作函數(shù),41,(2) 獲得文件屬性GetAttr函數(shù)。 格式:GetAttr(FileName) 功能:返回代表一個文件、目錄、或文件夾的屬性的Integer數(shù)據(jù)。GetAttr返回的值及代表的含義下表,42,3. FileDateTime函數(shù) 格式:FileDateTime(FileName) 功能:返回一個Variant (Date),此值為一個文件被創(chuàng)建或最后修改后的日期和時間。,4FileLen函數(shù) 格式:FileLen(FileName) 功能:返回一個Long,代表一個文件的長度,單位是字節(jié)。,43,5Shell函數(shù)和Shell過程,在VB中,可以調(diào)用在DOS下或Windows下運行的應(yīng)用程序:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論