VB第8章文件操作課件(PPT 72頁(yè))_第1頁(yè)
VB第8章文件操作課件(PPT 72頁(yè))_第2頁(yè)
VB第8章文件操作課件(PPT 72頁(yè))_第3頁(yè)
VB第8章文件操作課件(PPT 72頁(yè))_第4頁(yè)
VB第8章文件操作課件(PPT 72頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第8章 文 件 操 作8.1 文件IO流模型8.2 文件夾和文件操作8.3 文件讀寫(xiě)操作第1頁(yè),共72頁(yè)。8.1 文件IO流模型8.1.1 System.IO名稱(chēng)空間的資源System.IO模型中的資源由System.IO名稱(chēng)空間提供。該名稱(chēng)空間含有對(duì)數(shù)據(jù)流和文件進(jìn)行同步或異步讀寫(xiě)的類(lèi)、結(jié)構(gòu)和枚舉類(lèi)型,表8.1、表8.2、表8.3分別列出了System.IO名稱(chēng)空間提供的部分常用的類(lèi)、結(jié)構(gòu)和枚舉類(lèi)型。第2頁(yè),共72頁(yè)。8.1.2 System.IO名稱(chēng)空間的功能System.IO名稱(chēng)空間提供如下功能(括號(hào)中是提供相應(yīng)功能的類(lèi)):(1)建立、刪除、管理文件和文件夾(File和Directory)

2、。(2)監(jiān)控文件和文件夾的訪問(wèn)操作(FileSystemWatcher)。(3)對(duì)流進(jìn)行單字節(jié)字符或字節(jié)塊的讀/寫(xiě)操作(SystemReader和SystemWriter)。(4)對(duì)流進(jìn)行多字節(jié)字符的讀/寫(xiě)操作(SystemReader和SystemWriter)。(5)對(duì)流進(jìn)行字符的讀/寫(xiě)操作(SystemReader和SystemWriter)。(6)對(duì)字符串進(jìn)行字符的讀/寫(xiě)操作,并允許把字符串作為字符流處理(StringReader和StringWriter)。(7)從一個(gè)流中讀取數(shù)據(jù)類(lèi)型和對(duì)象,或?qū)?shù)據(jù)類(lèi)型和對(duì)象寫(xiě)入流中(BinaryReader和BinaryWriter)。第3頁(yè),共

3、72頁(yè)。8.1.2 System.IO名稱(chēng)空間的功能(8)文件的隨機(jī)訪問(wèn)(FileStream)。(9)系統(tǒng)性能優(yōu)化(MemoryStream和BufferedStream)。(10)枚舉文件或文件夾的屬性(FileAccess、FileMode、FileShare、FileAttributes、DirectoryAttributes)。(11)監(jiān)控文件或文件夾可能的改變(WatcherChangeTypes)。(12)枚舉文件或文件夾可能的改變(ChangedFilters)。(13)指定監(jiān)控的文件或文件夾(WatcherTarget)。(14)指定文件的相對(duì)位置(SeekOrigin)。第

4、4頁(yè),共72頁(yè)。8.2 文件夾和文件操作8.2.1 文件夾操作對(duì)文件夾操作主要利用Directory和DirectoryInfo兩個(gè)類(lèi)來(lái)實(shí)現(xiàn),它們都是System.IO名稱(chēng)空間的成員,因此在使用這兩個(gè)類(lèi)之前,需要先引入System.IO名稱(chēng)空間,引入的語(yǔ)句如下:Imports System.IO 引入System.IO名稱(chēng)空間。1Directory類(lèi)1)CreateDirectory方法CreateDirectory方法的功能是建立一個(gè)新的文件夾,同時(shí)返回一個(gè)包括新建文件夾信息的DirectoryInfo對(duì)象(DirectoryInfo對(duì)象在本節(jié)后面介紹),調(diào)用的語(yǔ)法格式如下:Director

5、y.CreateDirectory( path )例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為temp的子文件夾,方法如下:Directory.CreateDirectory(C:temp)CreateDirectory方法還可以一次建立多級(jí)文件夾,示例如下:Directory.CreateDirectory(C:dir1dir2dir3)第5頁(yè),共72頁(yè)。8.2.1 文件夾操作2)Delete方法Delete方法的功能是刪除指定文件夾及其中的所有文件和子文件夾,調(diào)用的語(yǔ)法格式如下:Directory.Delete( path , force)例如,刪除C盤(pán)根文件夾中的名為temp的空文件夾,方法如下:

6、Directory.Delete(C:temp )若temp文件夾中沒(méi)有任何文件或子文件夾,即可成功刪除,否則將產(chǎn)生異常。如要?jiǎng)h除含有子文件夾的文件夾,應(yīng)使用帶force參數(shù)的方法,示例如下:Directory.Delete(C: temp , True )第6頁(yè),共72頁(yè)。8.2.1 文件夾操作3)Exists方法Exists方法的功能是判斷指定的文件夾是否存在,若存在則返回一個(gè)邏輯值True;否則返回False。調(diào)用的語(yǔ)法格式如下:Directory.Exists( path )如果指定的文件夾不存在,Directory類(lèi)的很多方法會(huì)失敗,因此在做文件夾操作前,可以先用Exists方法確定

7、文件夾是否存在,示例如下:If Directory.Exists(C:temp )then Directory.Delete(C: temp , True )第7頁(yè),共72頁(yè)。8.2.1 文件夾操作4)Move方法Move方法的功能是移動(dòng)指定的整個(gè)文件夾到同一個(gè)磁盤(pán)中的另外一個(gè)位置。Move方法具有改名功能,即將源文件夾移動(dòng)到目標(biāo)文件夾指定的位置,但不是移動(dòng)到目標(biāo)文件夾中,而是將源文件夾名改為目標(biāo)文件夾名。調(diào)用它的語(yǔ)法格式如下:Directory.Move( source , destination )例如,將C盤(pán)根文件夾中名為temp的子文件夾移動(dòng)到“C:”中,并改名為dir1,方法如下:D

8、irectory.Move(C:temp , C:dir1 )第8頁(yè),共72頁(yè)。8.2.1 文件夾操作5)GetLogicalDrives方法GetLogicalDrives方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括當(dāng)前計(jì)算機(jī)中所有邏輯驅(qū)動(dòng)器名,每個(gè)驅(qū)動(dòng)器名是形如“C:”的字符串。調(diào)用的語(yǔ)法格式如下:Directory.GetLogicalDrives()例如,下面示例獲得本機(jī)所有邏輯驅(qū)動(dòng)器的名字,將其存放到字符串?dāng)?shù)組myDrv中,并將數(shù)組中所有元素放到一個(gè)組合框ComboBox1中:Dim myDrv() , x As String myDrv = Directory.GetLogicalDr

9、ives()For Each x In myDrvComboBox1.Items.Add(x)Next x第9頁(yè),共72頁(yè)。8.2.1 文件夾操作6)GetDirectories方法GetDirectories方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括指定文件夾的所有子文件夾的完整路徑名,不包括子文件夾中的子文件夾名。調(diào)用的語(yǔ)法格式如下:Directory.GetDirectories( path , pattern)例如,下面示例獲得C盤(pán)dir1文件夾的所有子文件夾的名字,將其存放到字符串?dāng)?shù)組myDrv中:Dim myDrv() As String myDrv = Directory.GetD

10、irectories(C:dir1)GetDirectories方法還可以使用通配符,獲得符合條件的子文件夾名。例如,要獲得C:WinNT下所有名字中包含“system”的子文件夾名,使用下面的語(yǔ)句:Dim myDrv() As String myDrv = Directory.GetDirectories(C:WinNT , *system*)第10頁(yè),共72頁(yè)。8.2.1 文件夾操作7)GetFiles方法GetFiles方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括指定文件夾的所有文件的完整路徑名,但不包括子文件夾中的文件名。調(diào)用的語(yǔ)法格式如下:Directory.GetFiles( path

11、 , pattern)例如,下面示例獲得C盤(pán)dir1文件夾中的所有文件的名字,將其存放到字符串?dāng)?shù)組myFiles中:Dim myFiles() As String myFiles = Directory.GetFiles(C:dir1)GetFiles方法還可以使用通配符,獲得符合條件的文件名。例如,要獲得C:WinNT下所有擴(kuò)展名為ini的文件名,使用下面的語(yǔ)句:Dim myFiles () As String myFiles = Directory.GetFiles(C: WinNT , *.ini )第11頁(yè),共72頁(yè)。8.2.1 文件夾操作8)GetFileSystemEntries方

12、法GetFileSystemEntries方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括指定文件夾的所有子文件夾和文件的完整路徑名,但不包括子文件夾中的文件夾和文件名。該方法實(shí)際是GetDirectories和GetFiles方法返回的數(shù)組的總和。調(diào)用的語(yǔ)法格式如下:Directory.GetFileSystemEntries( path , pattern)例如,下面示例獲得C盤(pán)dir1文件夾中所有文件夾和文件的名字,將其存放到字符串?dāng)?shù)組myFiles中:Dim myFiles() As String myFiles = Directory.GetFileSystemEntries( C:dir1

13、 )第12頁(yè),共72頁(yè)。8.2.1 文件夾操作GetFileSystemEntries方法也可以使用通配符,獲得符合條件的文件夾和文件名。例如,要獲得C:WinNT下所有包含“system”的文件夾和文件名,使用下面的語(yǔ)句:Dim myFiles () As String myFiles = Directory.GetFileSystemEntries (C WinNT , *system*)若要列舉C:WinNT下所有的文件夾和文件名,可以使用下面的語(yǔ)句:Dim myFiles () As String For Each myFiles In Directory.GetFileSystemE

14、ntries ( C: WinNT )Console.WriteLine(myFiles) 在輸出窗口顯示文件夾或文件名。Next第13頁(yè),共72頁(yè)。8.2.1 文件夾操作除了前面介紹的方法,Directory對(duì)象還有其他的一些方法,見(jiàn)表8.4,讀者可查閱資料或在線(xiàn)幫助,了解它們的功能和用法。第14頁(yè),共72頁(yè)。8.2.1 文件夾操作2DirectoryInfo類(lèi)創(chuàng)建DirectoryInfo對(duì)象的一個(gè)實(shí)例是通過(guò)調(diào)用它的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)的,語(yǔ)法格式如下:Dim 對(duì)象名As New DirectoryInfo ( path )例如,下面語(yǔ)句創(chuàng)建了一個(gè)關(guān)于C盤(pán)根文件夾的DirectoryInfo對(duì)象

15、:Dim di As New DirectoryInfo(C: ) 第15頁(yè),共72頁(yè)。8.2.1 文件夾操作1)CreateSubDirectory方法CreateSubDirectory方法的功能是在當(dāng)前實(shí)例所指定的文件夾下建立一個(gè)新文件夾,同時(shí)返回一個(gè)DirectoryInfo對(duì)象來(lái)代表新子文件夾,調(diào)用的語(yǔ)法格式如下:對(duì)象名.CreateSubDirectory( path )例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為temp的子文件夾,示例如下:Dim di As New DirectoryInfo(C: )Di.CreateSubDirectory(temp )CreateSubDirect

16、ory方法還可以一次建立多級(jí)文件夾,示例如下:Dim di As New DirectoryInfo(C: )Di.CreateSubDirectory( dir1dir2dir3 )第16頁(yè),共72頁(yè)。8.2.1 文件夾操作2)GetFileSystemInfos方法GetFileSystemInfos方法的功能是返回一個(gè)FileSystemInfo對(duì)象數(shù)組,數(shù)組中的每個(gè)元素都是當(dāng)前實(shí)例所表示的文件夾中的文件和子文件夾。調(diào)用的語(yǔ)法格式如下:對(duì)象名.GetFileSystemInfos(pattern)例如,獲取C盤(pán)根文件夾中所有文件和子文件夾對(duì)象,示例如下:Dim di As New Dir

17、ectoryInfo( C: )Dim itemsInfo() As FileSystemInfoItemsInfo = di.GetFileSystemInfos()GetFileSystemInfos方法還可以使用通配符,獲得符合條件的對(duì)象。例如,要獲得C:WinNT下所有包含“system”的文件夾和文件對(duì)象,使用下面的語(yǔ)句:Dim di As New DirectoryInfo( C:WinNT )Dim itemsInfo() As FileSystemInfoItemsInfo = di.GetFileSystemInfos( *system* )第17頁(yè),共72頁(yè)。8.2.1 文

18、件夾操作FileSystemInfo對(duì)象的常用屬性見(jiàn)表8.5。第18頁(yè),共72頁(yè)。8.2.1 文件夾操作如果要區(qū)分是文件還是文件夾,可以判斷FileSystemInfo對(duì)象的Attributes屬性是否為文件夾(即是否等于FileAttribute枚舉的Directory值),是即為文件夾,否則就是文件。代碼如下: Dim di As New DirectoryInfo( C: )Dim i As IntegerDim itemsInfo() As FileSystemInfoitemsInfo = di.GetFileSystemInfos( *system* )i = 1If itemsI

19、nfo(i).Attributes And FileAttributes.Directory Then 是文件夾Else 是文件。End If第19頁(yè),共72頁(yè)。8.2.2 文件操作1File類(lèi)File類(lèi)提供操作文件的方法,包括復(fù)制、移動(dòng)、打開(kāi)、關(guān)閉文件等方法。File類(lèi)有些方法的使用與Directory類(lèi)相同,表8.6列出了相同的方法。第20頁(yè),共72頁(yè)。8.2.2 文件操作1)Create方法Create方法的功能是建立并打開(kāi)一個(gè)新文件,同時(shí)返回指向該文件的Stream流對(duì)象。調(diào)用Create方法的語(yǔ)法格式如下:File.Create( path , bufferSize)例如,在C盤(pán)根文

20、件夾中創(chuàng)建一個(gè)名為myfile.dat的文件,返回一個(gè)名為ss的Stream流對(duì)象,方法如下:dim ss As Streamss = File.Create( C:myfile.dat )Create方法還可以在創(chuàng)建文件的同時(shí)指定文件的緩沖區(qū)大小。例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為myfile.dat的文件,并指定該文件的緩沖區(qū)為4096字節(jié),示例如下:dim ss As Streamss = File.Create(C:myfile.dat , 4096)第21頁(yè),共72頁(yè)。8.2.2 文件操作在有些情況下,用File類(lèi)的Create方法創(chuàng)建文件時(shí)會(huì)發(fā)生異常,表8.7列出了各種可能導(dǎo)致異常

21、的類(lèi)型。第22頁(yè),共72頁(yè)。8.2.2 文件操作2)CreateText方法CreateText方法類(lèi)似于Create方法,它的功能是建立并打開(kāi)一個(gè)新文本文件,同時(shí)返回指向該文件的StreamWriter流對(duì)象。StreamWriter對(duì)象類(lèi)似于Stream對(duì)象,但它只能用于文本文件的讀/寫(xiě)操作,而Stream對(duì)象可以用于文本文件和二進(jìn)制文件的讀/寫(xiě)操作。調(diào)用CreateText方法的語(yǔ)法格式如下:File.CreateText( path )例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為myfile.txt的文本文件,并返回一個(gè)名為sw的StreamWriter流對(duì)象,方法如下:dim sw As St

22、reamWritersw = File.CreateText( C:myfile.txt )第23頁(yè),共72頁(yè)。8.2.2 文件操作3)Copy方法Copy方法的功能是復(fù)制一個(gè)文件到新的位置。調(diào)用它的語(yǔ)法格式如下:File.Copy( source , destination , overwrite)例如,將C盤(pán)根文件夾中名為myfile.txt的文件復(fù)制到D:dir1中,并更名為myfile_bak.txt。若目標(biāo)文件已存在,則覆蓋目標(biāo)文件,方法如下:File.Copy( C:myfile.txt , D:dir1myfile_bak.txt , True)第24頁(yè),共72頁(yè)。8.2.2 文

23、件操作4)Move方法Move方法的功能是將指定的文件移動(dòng)到新的位置,可以使用它來(lái)給文件改名。另外它允許在不同的磁盤(pán)上移動(dòng)文件,這與Directory類(lèi)的Move 方法不同。調(diào)用它的語(yǔ)法格式如下:File.Move( source , destination)例如,將C盤(pán)根文件夾中名為myfile.txt的文件移動(dòng)到D:dir1中,并更名為myfile_new.txt,方法如下:File.Move( C:myfile.txt , D:dir1myfile_new.txt )第25頁(yè),共72頁(yè)。8.2.2 文件操作5)Delete方法Delete方法的功能是刪除指定的文件,若文件被打開(kāi),將產(chǎn)生異

24、常。調(diào)用它的語(yǔ)法格式如下:File.Delete( path)例如,刪除C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:File.Delete( C:myfile.txt )第26頁(yè),共72頁(yè)。8.2.2 文件操作6)GetAttributes方法GetAttributes方法的功能是獲得指定文件的屬性,該方法返回一個(gè)FileAttributes對(duì)象,該對(duì)象包含文件的所有屬性,表8.8列出了文件的各種屬性。調(diào)用GetAttributes方法的語(yǔ)法格式如下:File.GetAttributes( path)第27頁(yè),共72頁(yè)。8.2.2 文件操作7)Open方法Open方法的功能是打開(kāi)一

25、個(gè)已經(jīng)存在的文件,并返回一個(gè)指向該文件的Stream對(duì)象。調(diào)用它的語(yǔ)法格式如下:File.Open( path , FileMode , AccessMode , ShareMode)其中:(1)path,String類(lèi)型,代表要打開(kāi)文件的完整路徑,絕對(duì)路徑和相對(duì)路徑均可。(2)FileMode,可選項(xiàng),枚舉類(lèi)型,指定文件的打開(kāi)方式,取值見(jiàn)表8.9。第28頁(yè),共72頁(yè)。8.2.2 文件操作(3)AccessMode,可選項(xiàng),枚舉類(lèi)型,指定文件的訪問(wèn)權(quán)限,取值見(jiàn)表8.10。(4)ShareMode,可選項(xiàng),枚舉類(lèi)型,指定文件的共享方式,取值見(jiàn)表8.11。第29頁(yè),共72頁(yè)。8.2.2 文件操作例

26、如,以只讀方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.Open( “C:myfile.txt” , FileMode.Open , FileAccess.Read )上面的語(yǔ)句要求文件必須存在,若文件不存在,要求能創(chuàng)建該文件并以讀/寫(xiě)方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.Open( C:myfile.txt , FileMode.OpenOrCreate , FileAccess.ReadWrite )第3

27、0頁(yè),共72頁(yè)。8.2.2 文件操作8)OpenRead方法OpenRead方法的功能是以讀方式打開(kāi)一個(gè)已經(jīng)存在的文件,并返回一個(gè)指向該文件的Stream對(duì)象。若文件不存在或被打開(kāi),將產(chǎn)生異常。調(diào)用它的語(yǔ)法格式如下:File.OpenRead( path)OpenRead方法等價(jià)于用Open方法的Read訪問(wèn)權(quán)限方式打開(kāi)一個(gè)已經(jīng)存在的文件。例如,以讀方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.OpenRead(C:myfile.txt )第31頁(yè),共72頁(yè)。8.2.2 文件操作9)OpenWrite方法

28、OpenWrite方法的功能是以寫(xiě)方式打開(kāi)一個(gè)已經(jīng)存在的文件,并返回一個(gè)指向該文件的Stream對(duì)象。若文件不存在或被打開(kāi),將產(chǎn)生異常。調(diào)用它的語(yǔ)法格式如下:File.OpenWrite( path)OpenWrite方法等價(jià)于用Open方法的Write訪問(wèn)權(quán)限方式打開(kāi)一個(gè)已經(jīng)存在的文件。例如,以寫(xiě)方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.OpenWrite(C:myfile.txt )第32頁(yè),共72頁(yè)。8.2.2 文件操作10)AppendText方法AppendText方法的功能是以追加方式打開(kāi)

29、一個(gè)文本文件,可以在這個(gè)文件后追加文本,并返回一個(gè)指向該文件的StreamWriter對(duì)象。若文件不存在,將建立一個(gè)新文件并打開(kāi)。調(diào)用它的語(yǔ)法格式如下:File.AppendText( path)例如,以追加方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文本文件,方法如下:dim fsw As StreamWriterfsw = File.AppendText(C:myfile.txt )第33頁(yè),共72頁(yè)。8.2.2 文件操作11)OpenText方法OpenText方法的功能是以讀方式打開(kāi)一個(gè)已經(jīng)存在的文本文件,并返回一個(gè)指向該文件的StreamReader對(duì)象。若文件不存在,將產(chǎn)生異常

30、。調(diào)用它的語(yǔ)法格式如下:File.OpenText( path)例如,以讀方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文本文件,方法如下:dim fsr As StreamReaderfsr = File.OpenText(C:myfile.txt )第34頁(yè),共72頁(yè)。8.2.2 文件操作2FileInfo類(lèi)創(chuàng)建FileInfo對(duì)象的一個(gè)實(shí)例是通過(guò)調(diào)用它的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)的,其語(yǔ)法格式如下:Dim 對(duì)象名As New FileInfo ( path )例如,下面語(yǔ)句創(chuàng)建了一個(gè)關(guān)于C盤(pán)根文件夾中myFile.txt文件的FileInfo對(duì)象:Dim fi As New FileInfo(C:

31、myFile.txt)1)Length屬性Length屬性返回以字節(jié)為單位的文件大小,返回結(jié)果為L(zhǎng)ong類(lèi)型。File類(lèi)沒(méi)有提供類(lèi)似的屬性或方法。2)CreationTime、LastAccessTime、LastWriteTime屬性CreationTime屬性返回文件建立的時(shí)間,LastAccessTime屬性返回文件最后一次訪問(wèn)的時(shí)間,LastWriteTime屬性返回文件最后一次修改的時(shí)間。第35頁(yè),共72頁(yè)。8.2.2 文件操作3)Name、FullName、Extension屬性Name屬性返回文件名,F(xiàn)ullName屬性返回完整文件名(包括全路徑),Extension屬性返回文件

32、的擴(kuò)展名,3個(gè)屬性值都是String類(lèi)型。4)CopyTo和MoveTo方法這兩個(gè)方法的功能分別是復(fù)制和移動(dòng)當(dāng)前FileInfo實(shí)例所代表的文件,類(lèi)似于File類(lèi)的Copy和Move方法。CopyTo方法會(huì)返回一個(gè)FileInfo對(duì)象,代表目標(biāo)文件。調(diào)用的語(yǔ)法格式如下:FileInfo對(duì)象名.CopyTo( path , force)FileInfo對(duì)象名.MoveTo( path )第36頁(yè),共72頁(yè)。8.2.2 文件操作5)Directory方法Directory方法返回一個(gè)代表文件父目錄的DirectoryInfo對(duì)象。6)DirectoryName方法DirectoryName方法返回

33、文件父目錄的名字字符串。第37頁(yè),共72頁(yè)。8.2.3 文件管理控件VB.NET提供了DriveListBox、DirListBox和FileListBox三個(gè)控件,分別用于對(duì)驅(qū)動(dòng)器、文件夾和文件的操作。這3個(gè)控件并不在標(biāo)準(zhǔn)的控件工具箱中,使用時(shí)需要先添加到工具箱中,在工具箱上單擊鼠標(biāo)右鍵,在彈出的菜單上選擇【選擇項(xiàng)】,打開(kāi)如圖8.1所示。第38頁(yè),共72頁(yè)。8.2.3 文件管理控件1DriveListBox控件DriveListBox控件主要用于磁盤(pán)驅(qū)動(dòng)器的操作,使用該控件可以進(jìn)行驅(qū)動(dòng)器的切換和選擇。DriveListBox控件的常用屬性及事件如表8.12所示。第39頁(yè),共72頁(yè)。8.2.3

34、 文件管理控件2DirListBox控件DirListBox控件主要用于顯示文件夾列表,它可以對(duì)所選擇的文件夾進(jìn)行操作。比如,選擇路徑和設(shè)置當(dāng)前文件夾。DirListBox控件的常用屬性及事件如表8.13所示。第40頁(yè),共72頁(yè)。8.2.3 文件管理控件3FileListBox控件FileListBox控件主要用于顯示文件列表,使用該控件可以對(duì)所選擇的文件進(jìn)行操作。FileListBox控件的常用屬性及事件如表8.14所示。第41頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例【例8.1】 利用DriveListBox、DirListBox、FileListBox這3種控件,使驅(qū)動(dòng)器列表框、文件夾列表框和文

35、件列表框保持聯(lián)動(dòng),并能創(chuàng)建、刪除、移動(dòng)文件和文件夾。1界面設(shè)計(jì)設(shè)置一個(gè)驅(qū)動(dòng)器列表框(DriveListBox)、一個(gè)文件夾列表框(DirListBox)、一個(gè)文件列表框(FileListBox)、2個(gè)GroupBox和多個(gè)標(biāo)簽(Label)、文本框及命令按鈕(Button)。表8.15列出了其主要對(duì)象及屬性。第42頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例第43頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例2程序代碼設(shè)計(jì)為了使用File和Directory類(lèi)所提供的方法,在模塊中要先引入System.IO名稱(chēng)空間。 引入名稱(chēng)空間System.IOImports System.IO要使驅(qū)動(dòng)器列表框、文件夾列表框和文

36、件列表框保持聯(lián)動(dòng),需分別編寫(xiě)DriveListBox1和DirListBox1的SelectedIndexChanged事件代碼,相關(guān)程序如下:Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged DirListBox1.Path = DriveListBox1.DriveEnd SubPrivate Sub DirListBox1_SelectedI

37、ndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DirListBox1.SelectedIndexChanged FileListBox1.Path = DirListBox1.PathEnd Sub第44頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例要實(shí)現(xiàn)創(chuàng)建、刪除、移動(dòng)文件夾操作,需分別編寫(xiě)相應(yīng)按鈕的單擊事件代碼。創(chuàng)建文件夾程序:Private Sub btnNewDir_Click(ByVal sender As System.Object, ByVal e As System.Event

38、Args) Handles btnNewDir.Click Dim spath As String spath = DirListBox1.Path If txtNewDirName.Text = Or spath = Then MsgBox(請(qǐng)輸入要新建的文件夾名!) Else Directory.CreateDirectory(spath & & txtNewDirName.Text) End IfEnd Sub第45頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例移動(dòng)文件夾程序。刪除文件夾程序:Private Sub btnDelDir_Click(ByVal sender As System.Obj

39、ect, ByVal e As System.EventArgs) Handles btnDelDir.Click Dim spath As String Dim flg As MsgBoxResult spath = DirListBox1.Path flg = MsgBox(確實(shí)要?jiǎng)h除 & spath & 文件夾嗎?, MsgBoxStyle.YesNo) If flg = MsgBoxResult.Yes Then Directory.Delete(spath) End IfEnd Sub第46頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例對(duì)文件進(jìn)行創(chuàng)建、刪除、復(fù)制、移動(dòng)操作,需分別編寫(xiě)相應(yīng)按鈕的單

40、擊事件代碼。創(chuàng)建文件程序:Private Sub btnNewFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewFile.Click Dim spath As String Dim ss As Stream spath = DirListBox1.Path If txtNewFileName.Text = Or spath = Then MsgBox(請(qǐng)輸入要新建的文件名!) Else ss = File.Create(spath & & txtNewFileName.Tex

41、t) ss.Close() End IfEnd Sub第47頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例移動(dòng)文件程序:Private Sub btnMoveFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveFile.Click Dim spath As String spath = DirListBox1.Path If FileListBox1.FileName = Then MsgBox(請(qǐng)先選擇源文件!) Exit Sub End If If txtDestFileName.T

42、ext = Then MsgBox(請(qǐng)輸入完整的目標(biāo)文件名!) Exit Sub End If File.Move(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第48頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例復(fù)制文件程序:Private Sub btnCopyFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopyFile.Click Dim spath As String spath = DirListBox

43、1.Path If FileListBox1.FileName = Then MsgBox(請(qǐng)先選擇源文件!) Exit Sub End If If txtDestFileName.Text = Then MsgBox(請(qǐng)輸入完整的目標(biāo)文件名!) Exit Sub End If File.Copy(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第49頁(yè),共72頁(yè)。8.2.4 應(yīng)用示例刪除文件程序:Private Sub btnDelFile_Click(ByVal sender As System.Object, By

44、Val e As System.EventArgs) Handles btnDelFile.Click Dim spath As String Dim flg As MsgBoxResult spath = FileListBox1.FileName flg = MsgBox(確實(shí)要?jiǎng)h除 & DirListBox1.Path & & spath & 文件嗎?, _ MsgBoxStyle.YesNo) If flg = MsgBoxResult.Yes Then File.Delete(DirListBox1.Path & & spath) End IfEnd Sub第50頁(yè),共72頁(yè)。8.3

45、 文件讀寫(xiě)操作8.3.1 文件的種類(lèi)1順序文件(Sequential File)順序文件由一系列ASCII碼字符格式的文本行組成,每行的長(zhǎng)度可以不同,文件中的每個(gè)字符都表示一個(gè)文本字符或文本格式設(shè)置序列(如換行符等)。順序文件中的數(shù)據(jù)按順序排列,數(shù)據(jù)的順序與其在文件中出現(xiàn)的順序相同。2隨機(jī)文件(Random Access File)隨機(jī)文件是以隨機(jī)方式存取的文件,由一組長(zhǎng)度相等的記錄組成。在隨機(jī)文件中,記錄包含一個(gè)或多個(gè)字段(Field),字段類(lèi)型可以不同,每個(gè)字段的長(zhǎng)度是固定的,使用前須事先定義好。第51頁(yè),共72頁(yè)。8.3.1 文件的種類(lèi)3二進(jìn)制文件(Binary File)一般把文件分為

46、文本文件和二進(jìn)制文件(順序文件實(shí)際上是以二進(jìn)制方式存儲(chǔ)的)兩大類(lèi)。在VB.NET中,讀寫(xiě)文件是通過(guò)流(Stream)對(duì)象來(lái)進(jìn)行的。使用流對(duì)象讀寫(xiě)文件的基本步驟如下:(1)建立一個(gè)流Stream對(duì)象。(2)基于創(chuàng)建的流Stream對(duì)象,建立流Reader對(duì)象讀取文件內(nèi)容。(3)基于創(chuàng)建的流Stream對(duì)象,建立流Writer對(duì)象向文件寫(xiě)入內(nèi)容。第52頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)1FileStream類(lèi)要進(jìn)行文件的讀寫(xiě),首先可以使用FileStream類(lèi)創(chuàng)建一個(gè)關(guān)于文件的Stream對(duì)象。用FileStream類(lèi)創(chuàng)建FileStream流對(duì)象方法的語(yǔ)法格式如下:Dim 對(duì)象名 As Ne

47、w FileStream( path , FileMode , AccessMode , ShareMode)例如,創(chuàng)建一個(gè)基于C盤(pán)根文件夾的名為myfile.txt的文件的FileStream對(duì)象,以只讀方式打開(kāi)該文件,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.Read )第53頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)1)Length屬性Length屬性獲取文件的長(zhǎng)度,以字節(jié)為單位,它是只讀屬性。2)Position屬性Position屬性獲取或設(shè)置文件流的當(dāng)前位置。FileStr

48、eam沒(méi)有指示已到文件尾的標(biāo)志,可以通過(guò)比較Length和Position屬性值是否相等來(lái)檢查是否已到文件尾。3)SetLength方法SetLength方法的功能是設(shè)置文件的長(zhǎng)度,調(diào)用的語(yǔ)法格式如下:FileStream.SetLength( NewLength )4)Seek方法FileStream類(lèi)通過(guò)Seek方法對(duì)文件進(jìn)行隨機(jī)訪問(wèn),調(diào)用的語(yǔ)法格式如下:FileStream.Seek( Offset , Origin )第54頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)5)Lock方法 Lock方法可鎖定文件,防止其他進(jìn)程訪問(wèn)文件的全部或部分,調(diào)用的語(yǔ)法格式如下:FileStream.Lock

49、( Position , Length )6)UnLock方法UnLock方法可解鎖用Lock方法鎖定的文件,調(diào)用的語(yǔ)法格式如下:FileStream.UnLock( Position , Length )第55頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)2StreamReader類(lèi)要進(jìn)行文本文件的讀操作,需要?jiǎng)?chuàng)建一個(gè)關(guān)于文件的StreamReader對(duì)象。用StreamReader類(lèi)的構(gòu)造方法創(chuàng)建StreamReader對(duì)象的方法的語(yǔ)法格式如下:Dim 對(duì)象名 As New StreamReader( FS , Encoding , Buffersize)Dim 對(duì)象名 As New Stream

50、Reader( Path , Encoding , Buffersize)例如,創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.txt的文件內(nèi)容的StreamReader對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.Read )Dim sr As StreamReadersr = New StreamReader(fstream)也可以直接建立和文件關(guān)聯(lián)的StreamReader對(duì)象。例如,直接創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myf

51、ile.txt的文件內(nèi)容的StreamReader對(duì)象,方法如下:Dim sr As New StreamReader( C:myfile.txt )第56頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)StreamReader類(lèi)還有如下一些常用方法。1)ReadLine方法ReadLine方法從文件流中讀取一行字符,并返回讀取的字符串,若到達(dá)文件尾,則返回Nothing。ReadLine方法無(wú)參數(shù)。例如,創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.txt的文件內(nèi)容的StreamReader對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:Dim fstream As New FileS

52、tream( C:myfile.txt , FileMode.Open , FileAccess.Read )Dim sr As StreamReadersr = New StreamReader(fstream)Dim strLine As StringDim strAll As StringstrLine = sr.ReadLine() 讀取文件的第一行strAll = sr.ReadToEnd() 讀取文件的全部?jī)?nèi)容第57頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)2)ReadToEnd方法ReadToEnd方法讀取從文件流當(dāng)前位置到末尾的全部字符,并返回讀取的字符串。ReadToEnd方法無(wú)

53、參數(shù)。3)Read方法Read方法從文件當(dāng)前位置讀取下一個(gè)字符或下一組字符,若成功,則返回大于0的整數(shù);若到達(dá)文件尾,返回0,若試圖讀文件尾后的下一個(gè)字符,返回-1。調(diào)用的語(yǔ)法格式如下:StreamReader.Read(Chars , Startindex , Count )第58頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)3StreamWriter類(lèi)要進(jìn)行文本文件的寫(xiě)操作,需要?jiǎng)?chuàng)建一個(gè)關(guān)于文件的StreamWriter對(duì)象。用StreamWriter類(lèi)創(chuàng)建StreamWriter流對(duì)象的方法的語(yǔ)法格式如下:Dim 對(duì)象名 As New StreamWriter( FS , Encoding ,

54、Buffersize)Dim 對(duì)象名 As New StreamWriter( Path , Append , Encoding , Buffersize)例如,創(chuàng)建一個(gè)可以向C盤(pán)根文件夾中名為myfile.txt的文本文件寫(xiě)入內(nèi)容的StreamWriter對(duì)象,使用默認(rèn)UTF-8編碼格式,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.ReadWrite )Dim sw As StreamWritersw = New StreamWriter (fstream)也可以直接建立和文件關(guān)聯(lián)

55、的StreamWriter對(duì)象。例如,直接創(chuàng)建一個(gè)可以向C盤(pán)根文件夾中名為myfile.txt的文本文件寫(xiě)入內(nèi)容的StreamWriter對(duì)象,使用默認(rèn)的UTF-8編碼格式,方法如下:Dim sw As New StreamWriter( C:myfile.txt )第59頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)StreamWriter類(lèi)還有如下一些常用屬性和方法:1)NewLine屬性NewLine屬性獲取或設(shè)置StreamWriter對(duì)象所使用的行結(jié)束符,默認(rèn)為回車(chē)換行符。2)AutoFlush屬性AutoFlush屬性默認(rèn)為T(mén)rue,在調(diào)用Write或WriteLine方法后自動(dòng)將緩沖區(qū)中

56、數(shù)據(jù)寫(xiě)入文件;若為False,需要調(diào)用Flush方法才能將數(shù)據(jù)寫(xiě)入。3)Encoding屬性Encoding屬性獲取StreamWriter對(duì)象所使用的字符編碼方式。4)WriteLine方法WriteLine方法將字符和行結(jié)束符寫(xiě)入緩沖區(qū)。調(diào)用的語(yǔ)法格式如下:StreamWriter.WriteLine( str )第60頁(yè),共72頁(yè)。8.3.2 文本文件讀寫(xiě)5)Write方法Write方法將字符數(shù)組寫(xiě)入緩沖區(qū)。調(diào)用的語(yǔ)法格式如下:StreamWriter.Write( Chars ,Startindex , Count )6)Flush方法Flush方法將緩沖區(qū)數(shù)據(jù)寫(xiě)入文件。Flush方法

57、無(wú)參數(shù)。7)Close方法Close方法關(guān)閉當(dāng)前的StreamWriter實(shí)例并釋放關(guān)聯(lián)的資源,在關(guān)閉之前,將緩沖區(qū)數(shù)據(jù)寫(xiě)入文件。Close方法無(wú)參數(shù)。第61頁(yè),共72頁(yè)。8.3.3 二進(jìn)制文件讀寫(xiě)1BinaryReader類(lèi)BinaryReader對(duì)象實(shí)現(xiàn)從二進(jìn)制文件讀取數(shù)據(jù)。要用BinaryReader對(duì)象提供的方法,需要先創(chuàng)建該對(duì)象的一個(gè)實(shí)例。BinaryReader對(duì)象是和FileStream對(duì)象相關(guān)聯(lián)的,可以利用BinaryReader類(lèi)的構(gòu)造方法創(chuàng)建BinaryReader對(duì)象的實(shí)例,方法的語(yǔ)法格式如下:Dim 對(duì)象名 As New BinaryReader( FS , Encod

58、ing )例如,創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.dat的二進(jìn)制文件內(nèi)容的BinaryReader對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:Dim fstream As New FileStream( C:myfile.dat , FileMode.Open , FileAccess.Read )Dim sr As BinaryReadersr = New BinaryReader(fstream)第62頁(yè),共72頁(yè)。8.3.3 二進(jìn)制文件讀寫(xiě)建立了BinaryReader對(duì)象后,就可以使用它提供的各種方法來(lái)讀取二進(jìn)制文件中不同類(lèi)型的數(shù)據(jù),BinaryRead

59、er類(lèi)提供的各種方法見(jiàn)表8.17。第63頁(yè),共72頁(yè)。8.3.3 二進(jìn)制文件讀寫(xiě)使用BinaryReader對(duì)象的方法來(lái)讀取二進(jìn)制文件,示例如下:Dim fstream As New FileStream(C:myfile.dat, FileMode.Open , FileAccess.Read )Dim sr As BinaryReadersr = New BinaryReader(fstream)Dim blnX As BooleanDim bytX(9) As ByteDim chrX As CharchrX = sr. ReadChar() 讀取一個(gè)字符。blnX = sr. Read

60、Boolean() 讀取一個(gè)邏輯值。bytX = sr.ReadBytes(10) 讀取10個(gè)字節(jié)。第64頁(yè),共72頁(yè)。8.3.3 二進(jìn)制文件讀寫(xiě)2BinaryWriter類(lèi)BinaryWriter對(duì)象實(shí)現(xiàn)向二進(jìn)制文件寫(xiě)入數(shù)據(jù)。要用BinaryWriter對(duì)象提供的方法,需要先創(chuàng)建該對(duì)象的一個(gè)實(shí)例。BinaryWriter對(duì)象也是和FileStream對(duì)象相關(guān)聯(lián)的,可以利用BinaryWriter類(lèi)的構(gòu)造方法創(chuàng)建BinaryWriter對(duì)象的實(shí)例,方法的語(yǔ)法格式如下:Dim 對(duì)象名 As New binaryWriter(FS , Encoding)例如,創(chuàng)建一個(gè)可以寫(xiě)入C盤(pán)根文件夾中名為my

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論