第9章VBNET文件操作_第1頁
第9章VBNET文件操作_第2頁
第9章VBNET文件操作_第3頁
第9章VBNET文件操作_第4頁
第9章VBNET文件操作_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、時間和文件屬性n知識點知識點2 File 類類nFile類主要執(zhí)行與文件有關(guān)的操作,包括文件的創(chuàng)建、移動、刪除和打開等。所有的File方法都是靜態(tài)的,無需類的實例。 nAppendAllText 追加文本文件追加文本文件例如將文本“VB.NET”添加到E:VBNETABC.TXT文件中,語句如下:File.AppendAllText(“E: VBNETABC.TXT”,“VB.NET”)nCopy 復制文件復制文件例如將c:setup.txt文件復制到e:vbnet并改名為mytext.text,如果有同名文件,則覆蓋,語句如下: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 判斷文件是否存在判斷文件是否存在以下語句判斷以下語句判斷E盤盤VBNET文件夾下是否存在文件夾下是否存在myfile.dat文件,如果存在文件,如果存在則刪除。則刪除。If File.Exists(“E:VBNETmyfile.dat”) thenFile.Delete(“E:VBNETmy

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論