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

下載本文檔

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

文檔簡介

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

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

3、72頁。8.1.2 System.IO名稱空間的功能(8)文件的隨機(jī)訪問(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)指定文件的相對位置(SeekOrigin)。第

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

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

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

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

8、irectory.Move(C:temp , C:dir1 )第8頁,共72頁。8.2.1 文件夾操作5)GetLogicalDrives方法GetLogicalDrives方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括當(dāng)前計(jì)算機(jī)中所有邏輯驅(qū)動(dòng)器名,每個(gè)驅(qū)動(dòng)器名是形如“C:”的字符串。調(diào)用的語法格式如下: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頁,共72頁。8.2.1 文件夾操作6)GetDirectories方法GetDirectories方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括指定文件夾的所有子文件夾的完整路徑名,不包括子文件夾中的子文件夾名。調(diào)用的語法格式如下:Directory.GetDirectories( path , pattern)例如,下面示例獲得C盤dir1文件夾的所有子文件夾的名字,將其存放到字符串?dāng)?shù)組myDrv中:Dim myDrv() As String myDrv = Directory.GetD

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

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

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

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

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

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

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

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

18、件夾操作FileSystemInfo對象的常用屬性見表8.5。第18頁,共72頁。8.2.1 文件夾操作如果要區(qū)分是文件還是文件夾,可以判斷FileSystemInfo對象的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頁,共72頁。8.2.2 文件操作1File類File類提供操作文件的方法,包括復(fù)制、移動(dòng)、打開、關(guān)閉文件等方法。File類有些方法的使用與Directory類相同,表8.6列出了相同的方法。第20頁,共72頁。8.2.2 文件操作1)Create方法Create方法的功能是建立并打開一個(gè)新文件,同時(shí)返回指向該文件的Stream流對象。調(diào)用Create方法的語法格式如下:File.Create( path , bufferSize)例如,在C盤根文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、 文件管理控件2DirListBox控件DirListBox控件主要用于顯示文件夾列表,它可以對所選擇的文件夾進(jìn)行操作。比如,選擇路徑和設(shè)置當(dāng)前文件夾。DirListBox控件的常用屬性及事件如表8.13所示。第40頁,共72頁。8.2.3 文件管理控件3FileListBox控件FileListBox控件主要用于顯示文件列表,使用該控件可以對所選擇的文件進(jìn)行操作。FileListBox控件的常用屬性及事件如表8.14所示。第41頁,共72頁。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列出了其主要對象及屬性。第42頁,共72頁。8.2.4 應(yīng)用示例第43頁,共72頁。8.2.4 應(yīng)用示例2程序代碼設(shè)計(jì)為了使用File和Directory類所提供的方法,在模塊中要先引入System.IO名稱空間。 引入名稱空間System.IOImports System.IO要使驅(qū)動(dòng)器列表框、文件夾列表框和文

36、件列表框保持聯(lián)動(dòng),需分別編寫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頁,共72頁。8.2.4 應(yīng)用示例要實(shí)現(xiàn)創(chuàng)建、刪除、移動(dòng)文件夾操作,需分別編寫相應(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(請輸入要新建的文件夾名!) Else Directory.CreateDirectory(spath & & txtNewDirName.Text) End IfEnd Sub第45頁,共72頁。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頁,共72頁。8.2.4 應(yīng)用示例對文件進(jìn)行創(chuàng)建、刪除、復(fù)制、移動(dòng)操作,需分別編寫相應(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(請輸入要新建的文件名!) Else ss = File.Create(spath & & txtNewFileName.Tex

41、t) ss.Close() End IfEnd Sub第47頁,共72頁。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(請先選擇源文件!) Exit Sub End If If txtDestFileName.T

42、ext = Then MsgBox(請輸入完整的目標(biāo)文件名!) Exit Sub End If File.Move(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第48頁,共72頁。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(請先選擇源文件!) Exit Sub End If If txtDestFileName.Text = Then MsgBox(請輸入完整的目標(biāo)文件名!) Exit Sub End If File.Copy(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第49頁,共72頁。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頁,共72頁。8.3

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

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

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

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

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

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

51、ile.txt的文件內(nèi)容的StreamReader對象,方法如下:Dim sr As New StreamReader( C:myfile.txt )第56頁,共72頁。8.3.2 文本文件讀寫StreamReader類還有如下一些常用方法。1)ReadLine方法ReadLine方法從文件流中讀取一行字符,并返回讀取的字符串,若到達(dá)文件尾,則返回Nothing。ReadLine方法無參數(shù)。例如,創(chuàng)建一個(gè)可以讀取C盤根文件夾中名為myfile.txt的文件內(nèi)容的StreamReader對象,需先建立關(guān)于該文件的FileStream對象,方法如下: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() 讀取文件的全部內(nèi)容第57頁,共72頁。8.3.2 文本文件讀寫2)ReadToEnd方法ReadToEnd方法讀取從文件流當(dāng)前位置到末尾的全部字符,并返回讀取的字符串。ReadToEnd方法無

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

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

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

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

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

59、er類提供的各種方法見表8.17。第63頁,共72頁。8.3.3 二進(jìn)制文件讀寫使用BinaryReader對象的方法來讀取二進(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頁,共72頁。8.3.3 二進(jìn)制文件讀寫2BinaryWriter類BinaryWriter對象實(shí)現(xiàn)向二進(jìn)制文件寫入數(shù)據(jù)。要用BinaryWriter對象提供的方法,需要先創(chuàng)建該對象的一個(gè)實(shí)例。BinaryWriter對象也是和FileStream對象相關(guān)聯(lián)的,可以利用BinaryWriter類的構(gòu)造方法創(chuàng)建BinaryWriter對象的實(shí)例,方法的語法格式如下:Dim 對象名 As New binaryWriter(FS , Encoding)例如,創(chuàng)建一個(gè)可以寫入C盤根文件夾中名為my

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論