第9章VBNET文件操作_第1頁(yè)
第9章VBNET文件操作_第2頁(yè)
第9章VBNET文件操作_第3頁(yè)
第9章VBNET文件操作_第4頁(yè)
第9章VBNET文件操作_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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)介

1、第九章第九章 文件操作文件操作 9.1 文件概述文件概述 n文件是指在各種存儲(chǔ)介質(zhì)上永久存儲(chǔ)的數(shù)據(jù)的集合,它是進(jìn)行數(shù)據(jù)讀寫操作的基本對(duì)象。例如用Excel或Word編輯制作的表格或文檔就是一個(gè)文件,把它存放在磁盤上就是磁盤文件,輸出到打印機(jī)上就是一個(gè)打印機(jī)文件。計(jì)算機(jī)以這些設(shè)備為對(duì)象進(jìn)行輸入輸出,對(duì)這些設(shè)備的數(shù)據(jù)統(tǒng)一按文件處理。知識(shí)點(diǎn)1 文件結(jié)構(gòu) n為了有效的對(duì)數(shù)據(jù)進(jìn)行處理,必須以某種特定的方式存放數(shù)據(jù),這種特定的方式稱為文件結(jié)構(gòu)。文件由記錄(Record)組成,一個(gè)文件含一個(gè)以上的記錄,記錄是由一組相關(guān)的字段(Field)組成。字段也稱域,由若干字符(Character)組成,用來(lái)表示一項(xiàng)數(shù)

2、據(jù)。字符是構(gòu)成文件的最基本單位。字符可以是數(shù)字、字母、特殊符號(hào)或單一字節(jié)。n例如某班有30名學(xué)生,該班的學(xué)生相關(guān)信息表由如表9-1所示的30條記錄組成;每個(gè)學(xué)生的基本信息記錄由學(xué)號(hào)、姓名、性別、年齡和班級(jí)等數(shù)據(jù)項(xiàng)組成;每個(gè)數(shù)據(jù)項(xiàng)又由相關(guān)字母或數(shù)字組成。知識(shí)點(diǎn)2 文件種類 n根據(jù)不同的標(biāo)準(zhǔn),文件可分為不同的類型。n例如根據(jù)數(shù)據(jù)的存取方式和結(jié)構(gòu)可將文件分為順序文件和隨機(jī)文件。 1順序文件是最簡(jiǎn)單、最基本的文件結(jié)構(gòu)。文件中的記錄一個(gè)接一個(gè)的存放,每條記錄的長(zhǎng)度不定,記錄間的分界符一般為回車符。順序文件的查找必須從第一條記錄開(kāi)始逐條順序讀取,一直找到所需要的數(shù)據(jù)為止。順序文件的優(yōu)點(diǎn)是使用簡(jiǎn)單,占用內(nèi)存

3、資源比較少。缺點(diǎn)是訪問(wèn)速度慢,不易維護(hù)。 2隨機(jī)文件由固定長(zhǎng)度的記錄組成,每個(gè)記錄又由固定數(shù)目的數(shù)據(jù)項(xiàng)所組成,此外每條記錄都有一條記錄號(hào)。在存取數(shù)據(jù)時(shí),只要指明是第幾號(hào)記錄,就可以完成相應(yīng)的存取操作。其優(yōu)點(diǎn)是存入和讀取的速度較快,數(shù)據(jù)容易更新。缺點(diǎn)是占用空間比較大,程序設(shè)計(jì)較為麻煩。n根據(jù)文件的數(shù)據(jù)編碼可以將文件分為文本文件和二進(jìn)制文件。文本文件是由ASCII碼字符所組成并且不帶任何格式的文件,也稱之為ASCII文件,這種文件也可用通常的字處理軟件來(lái)建立和編輯;二進(jìn)制文件是由二進(jìn)制格式的數(shù)據(jù)編碼存儲(chǔ)的文件,由于不是使用普通的字符方式保存,所以不能用普通的字處理軟件編輯。n除此之外,可根據(jù)存儲(chǔ)數(shù)

4、據(jù)的性質(zhì)將文件分為程序文件和數(shù)據(jù)文件;根據(jù)文件的流向分為輸入文件和輸出文件;根據(jù)文件的存儲(chǔ)介質(zhì)分為磁盤文件、磁帶文件等等。知識(shí)點(diǎn)知識(shí)點(diǎn)3 文件訪問(wèn)方式文件訪問(wèn)方式 n文件訪問(wèn)主要是對(duì)文件的讀、寫操作。n讀文件是將文件中的數(shù)據(jù)讀入計(jì)算機(jī)內(nèi)存。即向計(jì)算機(jī)輸入數(shù)據(jù)。n寫文件-將計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)寫入文件中。n順序文件、隨機(jī)文件以及二進(jìn)制文件由于文件中記錄的組織方式和數(shù)據(jù)編碼格式有所差別,所以文件的訪問(wèn)可分為順序型、隨機(jī)型和二進(jìn)制型。n順序型適用于讀取連續(xù)存儲(chǔ)的文本文件;隨機(jī)型適用于讀取由固定長(zhǎng)度記錄組成的文本文件或二進(jìn)制文件;二進(jìn)制型適用于讀取任意有結(jié)構(gòu)的文件,除了沒(méi)有數(shù)據(jù)類型和記錄的概念外,與隨機(jī)

5、訪問(wèn)類似。nVB.NET提供了3種文件訪問(wèn)的方法:1VB傳統(tǒng)語(yǔ)句和函數(shù)直接訪問(wèn)文件2通過(guò).NET的System.IO模型以流的方式對(duì)各種數(shù)據(jù)文件進(jìn)行訪問(wèn)3通過(guò)文件系統(tǒng)對(duì)象模型(FSO)訪問(wèn)文件本章主要介紹第二種文件訪問(wèn)方式。9.2 文件流與文件流與System.IO模型模型 nVB.NET對(duì)文件的操作一種重要的方法就是利用流來(lái)完成。流的輸入和輸出是利用System.IO模型來(lái)實(shí)現(xiàn)的。n知識(shí)點(diǎn)1 System.IO模型概念 nSystem.IO模型提供了一個(gè)面向?qū)ο蟮姆椒ㄔL問(wèn)文件系統(tǒng)。System.IO模型提供了許多針對(duì)文件、文件夾的操作功能,特別是以流(Stream)的方式對(duì)各種數(shù)據(jù)進(jìn)行訪問(wèn),

6、這種訪問(wèn)方式不僅靈活,而且可以保證編碼接口的統(tǒng)一。nSystem.IO模型的實(shí)現(xiàn)包含在System.IO命名空間中,該命名空間含有對(duì)數(shù)據(jù)流和文件進(jìn)行同步或異步讀寫的類、結(jié)構(gòu)和枚舉類型。可以說(shuō),System.IO模型是一個(gè)文件操作類庫(kù),包含的類可用于文件的創(chuàng)建、讀寫、復(fù)制、移動(dòng)和刪除等操作。大致可以分為三類:n操作流的類:包括操作文件流、內(nèi)存流、讀寫這些流的類n操作文件夾的類:文件夾創(chuàng)建、移動(dòng)、刪除已經(jīng)磁盤信息訪問(wèn)n操作文件的類:對(duì)文件創(chuàng)建、移動(dòng)、刪除、獲取文件信息,如擴(kuò)展名、創(chuàng)建時(shí)間、是否只讀等。n其中最常用的類如表其中最常用的類如表9.2所示所示。知識(shí)點(diǎn)2 文件流 n在現(xiàn)實(shí)世界中,“流”是氣

7、體或液體運(yùn)動(dòng)的一種狀態(tài)。借用這個(gè)概念,VB.NET用流(Stream)表示數(shù)據(jù)的傳輸操作,將數(shù)據(jù)從內(nèi)存?zhèn)鬏數(shù)侥硞€(gè)載體或設(shè)備中,叫做輸出流;將數(shù)據(jù)從某個(gè)載體或設(shè)備傳輸?shù)絻?nèi)存中,叫做輸入流。流的概念進(jìn)一步拓展,可以把與數(shù)據(jù)傳輸有關(guān)的事物稱為流。例如把文件變量成為流,除此之外,還有網(wǎng)絡(luò)流、內(nèi)存流等。nVB.NET將文件看成是順序的字節(jié)流,文件流是字節(jié)序列的抽象概念,因此我們可以把文件視為存儲(chǔ)在磁盤上的一系列二進(jìn)制字節(jié)信息。System.IO模型下讀寫文件時(shí),不是直接操作文件,而是通過(guò)文件流的某些方法來(lái)實(shí)現(xiàn)文件的讀寫。n一般來(lái)說(shuō)對(duì)流的操作有3類:1讀?。嚎梢詮牧髯x取。讀取是從流到數(shù)據(jù)結(jié)構(gòu)(如字節(jié)數(shù)組)

8、的數(shù)據(jù)傳輸。2寫入:可以向流寫入。寫入是從數(shù)據(jù)源到流的數(shù)據(jù)傳輸。3定位:流可以支持查找。查找是對(duì)流內(nèi)的當(dāng)前位置進(jìn)行查詢和修改。nVB.NET提供的Stream類是所有流的基類,由它派生出文件流FileStream和緩沖區(qū)流BufferedStream。在System.IO模型中,文件操作的基本方式是:用FILE類打開(kāi)操作系統(tǒng)文件,建立對(duì)應(yīng)的文件流即FileStream對(duì)象,用StreamReader/StreamWriter類提供的方法對(duì)該文件流(文本文件)進(jìn)行讀寫或用BinaryReader/BinaryWriter類提供的方法對(duì)該文件流(二進(jìn)制文件)進(jìn)行讀寫。9.3 文件夾和文件操作 VB

9、.NET提供了Directory和File等幾個(gè)類來(lái)實(shí)現(xiàn)對(duì)文件夾和文件的復(fù)制、移動(dòng)、刪除等操作。本節(jié)將介紹與文件夾和文件操作相關(guān)的類及其用法。n任務(wù)任務(wù)1 編寫一個(gè)簡(jiǎn)易的資源瀏覽器。編寫一個(gè)簡(jiǎn)易的資源瀏覽器。 知識(shí)點(diǎn)1 Directory類 n對(duì)文件夾的操作主要利用Directory和DirectoryInfo兩個(gè)類來(lái)實(shí)現(xiàn),兩者很相似。區(qū)別在于Directory對(duì)象方法可以直接調(diào)用,而DirectoryInfo對(duì)象在使用前必須先建立一個(gè)對(duì)象的實(shí)例,然后才能調(diào)用DirectoryInfo方法。n無(wú)論Directory類還是DirectoryInfo類都是System.IO命名空間的成員,因此在使

10、用兩個(gè)類之前,需要先引入System.IO命名空間。nDirectory類提供了文件夾操作的全部方法,由于該類提供的方法是共享的,所以不需要先建立對(duì)象就可以直接調(diào)用它的方法,下面介紹它的常用方法: nCreateDirectory 創(chuàng)建文件夾對(duì)象創(chuàng)建文件夾對(duì)象例如:Directory.CreateDirectory(“E:VBNET”)nDelete 刪除指定的文件夾刪除指定的文件夾 例如Directory.Delete(“E:VBNET”)表示要?jiǎng)h除E盤下的VBNET空文件夾;如果該文件夾下含有子文件夾或文件,則使用Directory.Delete(“E:VBNET”,True)nExits

11、ts 判斷文件夾是否存在判斷文件夾是否存在例如:If Directory.Exists(“E:VBNET”) then Directory.Delete(“E:VBNET”,True)nMove 移動(dòng)文件夾移動(dòng)文件夾該方法是移動(dòng)指定整個(gè)文件夾到同一磁盤中的另一個(gè)位置,并具有改名功能 。例如:將E盤下的VBNET文件夾移動(dòng)到E盤Program文件夾下,并改名為VB,語(yǔ)句如下:Directory.Move(“E:VBNET”,“E:programVB”) nGetLogicalDrivers 獲取邏輯盤符獲取邏輯盤符該方法功能是返回一個(gè)字符串?dāng)?shù)組,為當(dāng)前計(jì)算機(jī)中所有邏輯驅(qū)動(dòng)器名,每個(gè)驅(qū)動(dòng)器名是形如

12、“C:”的字符串,格式如下:Directory.GetLogicalDrivers()GetDirectories 獲取文件夾下的子文件夾nGetFiles 獲取文件夾下的文件獲取文件夾下的文件例如:Dim FileName() As StringFileName=Directory.GetFiles(“E:VBNET”,“*.TXT”,SearchOption.AllDirectories)表示在E盤下的VBNET 文件夾下及其子文件夾下查找擴(kuò)展名為TXT的文件。任務(wù)任務(wù)2 設(shè)計(jì)一個(gè)窗體,顯示指定文件夾中所有文件的設(shè)計(jì)一個(gè)窗體,顯示指定文件夾中所有文件的文件名,創(chuàng)建時(shí)間和文件屬性文件名,創(chuàng)建

13、時(shí)間和文件屬性n知識(shí)點(diǎn)知識(shí)點(diǎn)2 File 類類nFile類主要執(zhí)行與文件有關(guān)的操作,包括文件的創(chuàng)建、移動(dòng)、刪除和打開(kāi)等。所有的File方法都是靜態(tài)的,無(wú)需類的實(shí)例。 nAppendAllText 追加文本文件追加文本文件例如將文本“VB.NET”添加到E:VBNETABC.TXT文件中,語(yǔ)句如下:File.AppendAllText(“E: VBNETABC.TXT”,“VB.NET”)nCopy 復(fù)制文件復(fù)制文件例如將c:setup.txt文件復(fù)制到e:vbnet并改名為mytext.text,如果有同名文件,則覆蓋,語(yǔ)句如下:File.Copy(“c:setup.txt”,“ e:vbne

14、t”,True)例如在E盤VBNET文件夾下創(chuàng)建myfile.dat文件:File.Create(“E:VBNETmyfile.dat”)nDelete 刪除文件刪除文件例如刪除E盤VBNET文件夾下的myfile.dat文件:File.Delete(“E:VBNETmyfile.dat”)nExists 判斷文件是否存在判斷文件是否存在以下語(yǔ)句判斷以下語(yǔ)句判斷E盤盤VBNET文件夾下是否存在文件夾下是否存在myfile.dat文件,如果存在文件,如果存在則刪除。則刪除。If File.Exists(“E:VBNETmyfile.dat”) thenFile.Delete(“E:VBNETmy

15、file.dat”)End IfnMove 移動(dòng)文件移動(dòng)文件例如:例如:File.Move(“E:text1.txt”,“F:text2.txt”)將將E盤下的盤下的text1.txt文件移動(dòng)到文件移動(dòng)到F盤下,并改名為盤下,并改名為text2.txt。nOpen 打開(kāi)文件打開(kāi)文件例如以讀寫方式打開(kāi)例如以讀寫方式打開(kāi)F盤下盤下Text2.txt文件,若文件不存在則創(chuàng)建該文文件,若文件不存在則創(chuàng)建該文件,語(yǔ)句如下:件,語(yǔ)句如下:File.Open(“f:text2.txt”,F(xiàn)ileMode.OpenOrCreate,F(xiàn)ileAccess.ReadWrite)nGetAttributes和和Se

16、tAttributes 獲取獲取和設(shè)置文件屬性和設(shè)置文件屬性9.4 文件讀寫文件讀寫 n本節(jié)將介紹利用Stream、FileStream、StreamReader和StreamWriter四個(gè)類來(lái)實(shí)現(xiàn)文件的讀寫。 n任務(wù)任務(wù)3 設(shè)計(jì)一個(gè)能打開(kāi)文本文件并對(duì)其設(shè)計(jì)一個(gè)能打開(kāi)文本文件并對(duì)其內(nèi)容進(jìn)行讀寫操作的窗體內(nèi)容進(jìn)行讀寫操作的窗體要求:利用Stream流將文本顯示在窗體多行文本框中,并修改其內(nèi)容后寫入到磁盤文件中。 知識(shí)點(diǎn)知識(shí)點(diǎn)1 Stream類類nStream類是所有流的基類,該類及其派生類提供不同類型的輸入和輸出的一般視圖 n主要屬性(1)CanRead屬性獲取一個(gè)值,該值指示當(dāng)前流是否支持讀

17、取。(2)CanSeek屬性獲取一個(gè)值,該值指示當(dāng)前流是否支持查找。(3)CanTimeout屬性獲取一個(gè)值,該值確定當(dāng)前流是否可以超時(shí)。(4)CanWrite屬性獲取一個(gè)值,該值指示當(dāng)前流是否支持寫入。(5)Length屬性獲取用字節(jié)表示的流的長(zhǎng)度。(6)Position屬性獲取或設(shè)置此流的當(dāng)前位置。(7)ReadTimeout屬性獲取或設(shè)置一個(gè)值,該值確定流在超時(shí)前嘗試讀取多長(zhǎng)時(shí)間。n2常用方法(1)Close方法關(guān)閉當(dāng)前流并釋放與之關(guān)聯(lián)的所有資源。(2)Read方法從文件中讀取字節(jié)序列(3)Seek方法設(shè)置當(dāng)前流中的位置,返回一個(gè)Long型值(4)SetLength方法將該流的長(zhǎng)度設(shè)置為

18、指定的值(5)Write方法用于向文件寫入數(shù)據(jù)n任務(wù)任務(wù)4設(shè)計(jì)一個(gè)窗體,能打開(kāi)文本文件并對(duì)設(shè)計(jì)一個(gè)窗體,能打開(kāi)文本文件并對(duì)其內(nèi)容進(jìn)行讀寫操作其內(nèi)容進(jìn)行讀寫操作n要求:利用FileStream流將文本顯示在窗體多行文本框中,并修改其內(nèi)容后寫入到磁盤文件中。n知識(shí)點(diǎn)知識(shí)點(diǎn)2 FileStream類類nFileStream類對(duì)文件系統(tǒng)上的文件執(zhí)行讀取、寫入、打開(kāi)和關(guān)閉操作,并對(duì)其他與文件相關(guān)的操作系統(tǒng)句柄執(zhí)行操作,如管道、標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。 n用FileStream類創(chuàng)建FileStream流對(duì)象方法的語(yǔ)法格式如下:nDim 對(duì)象名 As New FileStream(path,F(xiàn)ileMode,

19、AccessMode,ShareMode)n各參數(shù)說(shuō)明同F(xiàn)ile.Open的參數(shù)。nFileStream類有如下一些常用的方法:n1SetLength方法是設(shè)置文件的長(zhǎng)度。n2Seek方法功能是對(duì)文件進(jìn)行隨機(jī)訪問(wèn)。n3Read方法從文件讀取數(shù)據(jù)。n4Write方法向文件寫數(shù)據(jù)。n5Lock方法鎖定文件,防止其他進(jìn)程訪問(wèn)文件的全部或部分,語(yǔ)法格式如下:nLock(Position,Length)nPosition為L(zhǎng)ong類型數(shù)據(jù),指定要鎖定范圍的起使位置;Length為L(zhǎng)ong類型數(shù)據(jù),指定要鎖定的范圍。n6Unlock方法可解鎖用Lock方法鎖定的文件,調(diào)用的語(yǔ)法格式如下:nUnLock(Position,Length)nLock和Unlock兩個(gè)方法是在文件讀寫操作中Filstream類兩個(gè)最為重要的方法。由于Filestream類為文件讀寫提供通道,一個(gè)文件可能有多個(gè)文件讀寫,為了避免數(shù)據(jù)寫入和讀取的混亂,需要單通道操作,這時(shí)可以使用Lock方法來(lái)鎖定,阻止其他的進(jìn)程對(duì)文件執(zhí)行操作,在操作完畢后可以使用Unlock方法對(duì)其解鎖。任務(wù)5 設(shè)計(jì)一個(gè)窗體,能打開(kāi)文本文件并對(duì)其內(nèi)容進(jìn)行讀寫操作 n選擇一個(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)論