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

第8章

文件操作

8.1文件IO流模型8.2文件夾和文件操作8.3文件讀寫(xiě)操作8.1文件IO流模型8.1.1System.IO名稱空間的資源System.IO模型中的資源由System.IO名稱空間提供。該名稱空間含有對(duì)數(shù)據(jù)流和文件進(jìn)行同步或異步讀寫(xiě)的類(lèi)、結(jié)構(gòu)和枚舉類(lèi)型,表8.1、表8.2、表8.3分別列出了System.IO名稱空間提供的部分常用的類(lèi)、結(jié)構(gòu)和枚舉類(lèi)型。8.1.2System.IO名稱空間的功能System.IO名稱空間提供如下功能(括號(hào)中是提供相應(yīng)功能的類(lèi)):(1)建立、刪除、管理文件和文件夾(File和Directory)。(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)。8.1.2System.IO名稱空間的功能(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)。8.2文件夾和文件操作8.2.1文件夾操作對(duì)文件夾操作主要利用Directory和DirectoryInfo兩個(gè)類(lèi)來(lái)實(shí)現(xiàn),它們都是System.IO名稱空間的成員,因此在使用這兩個(gè)類(lèi)之前,需要先引入System.IO名稱空間,引入的語(yǔ)句如下:ImportsSystem.IO '引入System.IO名稱空間。1.Directory類(lèi)1)CreateDirectory方法CreateDirectory方法的功能是建立一個(gè)新的文件夾,同時(shí)返回一個(gè)包括新建文件夾信息的DirectoryInfo對(duì)象(DirectoryInfo對(duì)象在本節(jié)后面介紹),調(diào)用的語(yǔ)法格式如下:Directory.CreateDirectory(path)例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為temp的子文件夾,方法如下:Directory.CreateDirectory("C:\temp"

) CreateDirectory方法還可以一次建立多級(jí)文件夾,示例如下:Directory.CreateDirectory("C:\dir1\dir2\dir3"

) 8.2.1文件夾操作2)Delete方法Delete方法的功能是刪除指定文件夾及其中的所有文件和子文件夾,調(diào)用的語(yǔ)法格式如下:Directory.Delete(path,force)例如,刪除C盤(pán)根文件夾中的名為temp的空文件夾,方法如下:Directory.Delete("C:\temp") 若temp文件夾中沒(méi)有任何文件或子文件夾,即可成功刪除,否則將產(chǎn)生異常。如要?jiǎng)h除含有子文件夾的文件夾,應(yīng)使用帶force參數(shù)的方法,示例如下:Directory.Delete("C:\temp",True) 8.2.1文件夾操作3)Exists方法Exists方法的功能是判斷指定的文件夾是否存在,若存在則返回一個(gè)邏輯值True;否則返回False。調(diào)用的語(yǔ)法格式如下:Directory.Exists(path)如果指定的文件夾不存在,Directory類(lèi)的很多方法會(huì)失敗,因此在做文件夾操作前,可以先用Exists方法確定文件夾是否存在,示例如下:IfDirectory.Exists("C:\temp") then Directory.Delete("C:\temp",True)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,方法如下:Directory.Move("C:\temp","C:\dir1") 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中:DimmyDrv(),xAsStringmyDrv=Directory.GetLogicalDrives() ForEachxInmyDrv ComboBox1.Items.Add(x)Nextx8.2.1文件夾操作6)GetDirectories方法GetDirectories方法的功能是返回一個(gè)字符串?dāng)?shù)組,其中包括指定文件夾的所有子文件夾的完整路徑名,不包括子文件夾中的子文件夾名。調(diào)用的語(yǔ)法格式如下:Directory.GetDirectories(path,pattern)例如,下面示例獲得C盤(pán)dir1文件夾的所有子文件夾的名字,將其存放到字符串?dāng)?shù)組myDrv中:DimmyDrv()AsStringmyDrv=Directory.GetDirectories("C:\dir1") GetDirectories方法還可以使用通配符,獲得符合條件的子文件夾名。例如,要獲得C:\WinNT下所有名字中包含“system”的子文件夾名,使用下面的語(yǔ)句:DimmyDrv()AsStringmyDrv=Directory.GetDirectories("C:\WinNT","*system*"

)

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

"C:\dir1"

) GetFiles方法還可以使用通配符,獲得符合條件的文件名。例如,要獲得C:\WinNT下所有擴(kuò)展名為ini的文件名,使用下面的語(yǔ)句:DimmyFiles()AsStringmyFiles=Directory.GetFiles(

"C:\WinNT","*.ini"

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

8.2.1文件夾操作GetFileSystemEntries方法也可以使用通配符,獲得符合條件的文件夾和文件名。例如,要獲得C:\WinNT下所有包含“system”的文件夾和文件名,使用下面的語(yǔ)句:DimmyFiles()AsStringmyFiles=Directory.GetFileSystemEntries(

"C\WinNT","*system*"

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

"C:\"

)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的子文件夾,示例如下:DimdiAsNewDirectoryInfo("C:\")Di.CreateSubDirectory("temp")

CreateSubDirectory方法還可以一次建立多級(jí)文件夾,示例如下:DimdiAsNewDirectoryInfo(

"C:\")Di.CreateSubDirectory("dir1\dir2\dir3") 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ì)象,示例如下:DimdiAsNewDirectoryInfo("C:\")DimitemsInfo()AsFileSystemInfoItemsInfo=di.GetFileSystemInfos() GetFileSystemInfos方法還可以使用通配符,獲得符合條件的對(duì)象。例如,要獲得C:\WinNT下所有包含“system”的文件夾和文件對(duì)象,使用下面的語(yǔ)句:DimdiAsNewDirectoryInfo("C:\WinNT")DimitemsInfo()AsFileSystemInfoItemsInfo=di.GetFileSystemInfos("*system*")

8.2.1文件夾操作FileSystemInfo對(duì)象的常用屬性見(jiàn)表8.5。8.2.1文件夾操作如果要區(qū)分是文件還是文件夾,可以判斷FileSystemInfo對(duì)象的Attributes屬性是否為文件夾(即是否等于FileAttribute枚舉的Directory值),是即為文件夾,否則就是文件。代碼如下:DimdiAsNewDirectoryInfo("C:\")DimiAsIntegerDimitemsInfo()AsFileSystemInfoitemsInfo=di.GetFileSystemInfos("*system*")i=1IfitemsInfo(i).AttributesAndFileAttributes.DirectoryThen '是文件夾Else '是文件。EndIf 8.2.2文件操作1.File類(lèi)File類(lèi)提供操作文件的方法,包括復(fù)制、移動(dòng)、打開(kāi)、關(guān)閉文件等方法。File類(lèi)有些方法的使用與Directory類(lèi)相同,表8.6列出了相同的方法。8.2.2文件操作1)Create方法Create方法的功能是建立并打開(kāi)一個(gè)新文件,同時(shí)返回指向該文件的Stream流對(duì)象。調(diào)用Create方法的語(yǔ)法格式如下:File.Create(path,bufferSize)例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為myfile.dat的文件,返回一個(gè)名為ss的Stream流對(duì)象,方法如下:dimssAsStreamss=File.Create("C:\myfile.dat") Create方法還可以在創(chuàng)建文件的同時(shí)指定文件的緩沖區(qū)大小。例如,在C盤(pán)根文件夾中創(chuàng)建一個(gè)名為myfile.dat的文件,并指定該文件的緩沖區(qū)為4096字節(jié),示例如下:dimssAsStreamss=File.Create("C:\myfile.dat",4096) 8.2.2文件操作在有些情況下,用File類(lèi)的Create方法創(chuàng)建文件時(shí)會(huì)發(fā)生異常,表8.7列出了各種可能導(dǎo)致異常的類(lèi)型。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ì)象,方法如下:dimswAsStreamWritersw=File.CreateText("C:\myfile.txt")

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:\dir1\myfile_bak.txt",True)8.2.2文件操作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:\dir1\myfile_new.txt")8.2.2文件操作5)Delete方法Delete方法的功能是刪除指定的文件,若文件被打開(kāi),將產(chǎn)生異常。調(diào)用它的語(yǔ)法格式如下:File.Delete(path)例如,刪除C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:File.Delete("C:\myfile.txt")8.2.2文件操作6)GetAttributes方法GetAttributes方法的功能是獲得指定文件的屬性,該方法返回一個(gè)FileAttributes對(duì)象,該對(duì)象包含文件的所有屬性,表8.8列出了文件的各種屬性。調(diào)用GetAttributes方法的語(yǔ)法格式如下:File.GetAttributes(path)8.2.2文件操作7)Open方法Open方法的功能是打開(kāi)一個(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。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。8.2.2文件操作例如,以只讀方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.Open(“C:\myfile.txt”,FileMode.Open,FileAccess.Read) 上面的語(yǔ)句要求文件必須存在,若文件不存在,要求能創(chuàng)建該文件并以讀/寫(xiě)方式打開(kāi)C盤(pán)根文件夾中名為myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.Open("C:\myfile.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite) 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的文件,方法如下:dimfstreamAsStreamfstream=File.OpenRead("C:\myfile.txt") 8.2.2文件操作9)OpenWrite方法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的文件,方法如下:dimfstreamAsStreamfstream=File.OpenWrite("C:\myfile.txt")

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

8.2.2文件操作2.FileInfo類(lèi)創(chuàng)建FileInfo對(duì)象的一個(gè)實(shí)例是通過(guò)調(diào)用它的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)的,其語(yǔ)法格式如下:Dim對(duì)象名AsNewFileInfo(path)例如,下面語(yǔ)句創(chuàng)建了一個(gè)關(guān)于C盤(pán)根文件夾中myFile.txt文件的FileInfo對(duì)象:DimfiAsNewFileInfo("C:\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í)間。8.2.2文件操作3)Name、FullName、Extension屬性Name屬性返回文件名,F(xiàn)ullName屬性返回完整文件名(包括全路徑),Extension屬性返回文件的擴(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)8.2.2文件操作5)Directory方法Directory方法返回一個(gè)代表文件父目錄的DirectoryInfo對(duì)象。6)DirectoryName方法DirectoryName方法返回文件父目錄的名字字符串。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所示。8.2.3文件管理控件1.DriveListBox控件DriveListBox控件主要用于磁盤(pán)驅(qū)動(dòng)器的操作,使用該控件可以進(jìn)行驅(qū)動(dòng)器的切換和選擇。DriveListBox控件的常用屬性及事件如表8.12所示。8.2.3文件管理控件2.DirListBox控件DirListBox控件主要用于顯示文件夾列表,它可以對(duì)所選擇的文件夾進(jìn)行操作。比如,選擇路徑和設(shè)置當(dāng)前文件夾。DirListBox控件的常用屬性及事件如表8.13所示。8.2.3文件管理控件3.FileListBox控件FileListBox控件主要用于顯示文件列表,使用該控件可以對(duì)所選擇的文件進(jìn)行操作。FileListBox控件的常用屬性及事件如表8.14所示。8.2.4應(yīng)用示例【例8.1】利用DriveListBox、DirListBox、FileListBox這3種控件,使驅(qū)動(dòng)器列表框、文件夾列表框和文件列表框保持聯(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ì)象及屬性。8.2.4應(yīng)用示例8.2.4應(yīng)用示例2.程序代碼設(shè)計(jì)為了使用File和Directory類(lèi)所提供的方法,在模塊中要先引入System.IO名稱空間。'引入名稱空間System.IOImportsSystem.IO要使驅(qū)動(dòng)器列表框、文件夾列表框和文件列表框保持聯(lián)動(dòng),需分別編寫(xiě)DriveListBox1和DirListBox1的SelectedIndexChanged事件代碼,相關(guān)程序如下:PrivateSubDriveListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs)HandlesDriveListBox1.SelectedIndexChangedDirListBox1.Path=DriveListBox1.DriveEndSub

PrivateSubDirListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs)HandlesDirListBox1.SelectedIndexChangedFileListBox1.Path=DirListBox1.PathEndSub8.2.4應(yīng)用示例要實(shí)現(xiàn)創(chuàng)建、刪除、移動(dòng)文件夾操作,需分別編寫(xiě)相應(yīng)按鈕的單擊事件代碼。創(chuàng)建文件夾程序:PrivateSubbtnNewDir_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnNewDir.ClickDimspathAsStringspath=DirListBox1.PathIftxtNewDirName.Text=""Orspath=""ThenMsgBox("請(qǐng)輸入要新建的文件夾名!")ElseDirectory.CreateDirectory(spath&"\"&txtNewDirName.Text)EndIfEndSub8.2.4應(yīng)用示例移動(dòng)文件夾程序。刪除文件夾程序:PrivateSubbtnDelDir_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnDelDir.ClickDimspathAsStringDimflgAsMsgBoxResultspath=DirListBox1.Pathflg=MsgBox("確實(shí)要?jiǎng)h除"&spath&"文件夾嗎?",MsgBoxStyle.YesNo)Ifflg=MsgBoxResult.YesThenDirectory.Delete(spath)EndIfEndSub8.2.4應(yīng)用示例對(duì)文件進(jìn)行創(chuàng)建、刪除、復(fù)制、移動(dòng)操作,需分別編寫(xiě)相應(yīng)按鈕的單擊事件代碼。創(chuàng)建文件程序:PrivateSubbtnNewFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnNewFile.ClickDimspathAsStringDimssAsStreamspath=DirListBox1.PathIftxtNewFileName.Text=""Orspath=""ThenMsgBox("請(qǐng)輸入要新建的文件名!")Elsess=File.Create(spath&"\"&txtNewFileName.Text)ss.Close()EndIfEndSub8.2.4應(yīng)用示例移動(dòng)文件程序:PrivateSubbtnMoveFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnMoveFile.ClickDimspathAsStringspath=DirListBox1.PathIfFileListBox1.FileName=""ThenMsgBox("請(qǐng)先選擇源文件!")ExitSubEndIfIftxtDestFileName.Text=""ThenMsgBox("請(qǐng)輸入完整的目標(biāo)文件名!")ExitSubEndIfFile.Move(spath&"\"&FileListBox1.FileName,txtDestFileName.Text)EndSub8.2.4應(yīng)用示例復(fù)制文件程序:PrivateSubbtnCopyFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnCopyFile.ClickDimspathAsStringspath=DirListBox1.PathIfFileListBox1.FileName=""ThenMsgBox("請(qǐng)先選擇源文件!")ExitSubEndIfIftxtDestFileName.Text=""ThenMsgBox("請(qǐng)輸入完整的目標(biāo)文件名!")ExitSubEndIf

File.Copy(spath&"\"&FileListBox1.FileName,txtDestFileName.Text)EndSub8.2.4應(yīng)用示例刪除文件程序:PrivateSubbtnDelFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnDelFile.ClickDimspathAsStringDimflgAsMsgBoxResultspath=FileListBox1.FileNameflg=MsgBox("確實(shí)要?jiǎng)h除"&DirListBox1.Path&"\"&spath&"文件嗎?",_MsgBoxStyle.YesNo)Ifflg=MsgBoxResult.YesThenFile.Delete(DirListBox1.Path&"\"&spath)EndIfEndSub8.3文件讀寫(xiě)操作8.3.1文件的種類(lèi)1.順序文件(SequentialFile)順序文件由一系列ASCII碼字符格式的文本行組成,每行的長(zhǎng)度可以不同,文件中的每個(gè)字符都表示一個(gè)文本字符或文本格式設(shè)置序列(如換行符等)。順序文件中的數(shù)據(jù)按順序排列,數(shù)據(jù)的順序與其在文件中出現(xiàn)的順序相同。2.隨機(jī)文件(RandomAccessFile)隨機(jī)文件是以隨機(jī)方式存取的文件,由一組長(zhǎng)度相等的記錄組成。在隨機(jī)文件中,記錄包含一個(gè)或多個(gè)字段(Field),字段類(lèi)型可以不同,每個(gè)字段的長(zhǎng)度是固定的,使用前須事先定義好。8.3.1文件的種類(lèi)3.二進(jìn)制文件(BinaryFile)一般把文件分為文本文件和二進(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)容。8.3.2文本文件讀寫(xiě)1.FileStream類(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ì)象名

AsNewFileStream(path,FileMode,AccessMode,ShareMode)例如,創(chuàng)建一個(gè)基于C盤(pán)根文件夾的名為myfile.txt的文件的FileStream對(duì)象,以只讀方式打開(kāi)該文件,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read)

8.3.2文本文件讀寫(xiě)1)Length屬性Length屬性獲取文件的長(zhǎng)度,以字節(jié)為單位,它是只讀屬性。2)Position屬性Position屬性獲取或設(shè)置文件流的當(dāng)前位置。FileStream沒(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)

8.3.2文本文件讀寫(xiě)5)Lock方法Lock方法可鎖定文件,防止其他進(jìn)程訪問(wèn)文件的全部或部分,調(diào)用的語(yǔ)法格式如下:FileStream.Lock(Position,Length)6)UnLock方法UnLock方法可解鎖用Lock方法鎖定的文件,調(diào)用的語(yǔ)法格式如下:FileStream.UnLock(Position,Length)8.3.2文本文件讀寫(xiě)2.StreamReader類(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ì)象名

AsNewStreamReader(FS,Encoding,Buffersize)Dim對(duì)象名

AsNewStreamReader(Path,Encoding,Buffersize)例如,創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.txt的文件內(nèi)容的StreamReader對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read)DimsrAsStreamReadersr=NewStreamReader(fstream)也可以直接建立和文件關(guān)聯(lián)的StreamReader對(duì)象。例如,直接創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.txt的文件內(nèi)容的StreamReader對(duì)象,方法如下:DimsrAsNewStreamReader("C:\myfile.txt")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ì)象,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read) DimsrAsStreamReadersr=NewStreamReader(fstream)DimstrLineAsStringDimstrAllAsStringstrLine=sr.ReadLine() '讀取文件的第一行strAll=sr.ReadToEnd() '讀取文件的全部?jī)?nèi)容8.3.2文本文件讀寫(xiě)2)ReadToEnd方法ReadToEnd方法讀取從文件流當(dāng)前位置到末尾的全部字符,并返回讀取的字符串。ReadToEnd方法無(wú)參數(shù)。3)Read方法Read方法從文件當(dāng)前位置讀取下一個(gè)字符或下一組字符,若成功,則返回大于0的整數(shù);若到達(dá)文件尾,返回0,若試圖讀文件尾后的下一個(gè)字符,返回-1。調(diào)用的語(yǔ)法格式如下:StreamReader.Read(Chars,Startindex,Count)8.3.2文本文件讀寫(xiě)3.StreamWriter類(lèi)要進(jìn)行文本文件的寫(xiě)操作,需要?jiǎng)?chuàng)建一個(gè)關(guān)于文件的StreamWriter對(duì)象。用StreamWriter類(lèi)創(chuàng)建StreamWriter流對(duì)象的方法的語(yǔ)法格式如下:Dim對(duì)象名

AsNewStreamWriter(FS,Encoding,Buffersize)Dim對(duì)象名

AsNewStreamWriter(Path,Append,Encoding,Buffersize)例如,創(chuàng)建一個(gè)可以向C盤(pán)根文件夾中名為myfile.txt的文本文件寫(xiě)入內(nèi)容的StreamWriter對(duì)象,使用默認(rèn)UTF-8編碼格式,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.ReadWrite)DimswAsStreamWritersw=NewStreamWriter(fstream)也可以直接建立和文件關(guān)聯(lián)的StreamWriter對(duì)象。例如,直接創(chuàng)建一個(gè)可以向C盤(pán)根文件夾中名為myfile.txt的文本文件寫(xiě)入內(nèi)容的StreamWriter對(duì)象,使用默認(rèn)的UTF-8編碼格式,方法如下:DimswAsNewStreamWriter("C:\myfile.txt")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ū)中數(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)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方法無(wú)參數(shù)。7)Close方法Close方法關(guān)閉當(dāng)前的StreamWriter實(shí)例并釋放關(guān)聯(lián)的資源,在關(guān)閉之前,將緩沖區(qū)數(shù)據(jù)寫(xiě)入文件。Close方法無(wú)參數(shù)。8.3.3二進(jìn)制文件讀寫(xiě)1.BinaryReader類(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ì)象名

AsNewBinaryReader(FS,Encoding)例如,創(chuàng)建一個(gè)可以讀取C盤(pán)根文件夾中名為myfile.dat的二進(jìn)制文件內(nèi)容的BinaryReader對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:DimfstreamAsNewFileStream("C:\myfile.dat",FileMode.Open,FileAccess.Read)DimsrAsBinaryReadersr=NewBinaryReader(fstream)8.3.3二進(jìn)制文件讀寫(xiě)建立了BinaryReader對(duì)象后,就可以使用它提供的各種方法來(lái)讀取二進(jìn)制文件中不同類(lèi)型的數(shù)據(jù),BinaryReader類(lèi)提供的各種方法見(jiàn)表8.17。8.3.3二進(jìn)制文件讀寫(xiě)使用BinaryReader對(duì)象的方法來(lái)讀取二進(jìn)制文件,示例如下:DimfstreamAsNewFileStream("C:\myfile.dat",FileMode.Open,FileAccess.Read)DimsrAsBinaryReadersr=NewBinaryReader(fstream)DimblnXAsBooleanDimbytX(9)AsByteDimchrXAsCharchrX=sr.ReadChar() '讀取一個(gè)字符。blnX=sr.ReadBoolean() '讀取一個(gè)邏輯值。bytX=sr.ReadBytes(10) '讀取10個(gè)字節(jié)。8.3.3二進(jìn)制文件讀寫(xiě)2.BinaryWriter類(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ì)象名

AsNewbinaryWriter(FS,Encoding)例如,創(chuàng)建一個(gè)可以寫(xiě)入C盤(pán)根文件夾中名為myfile.dat的二進(jìn)制文件內(nèi)容的BinaryWriter對(duì)象,需先建立關(guān)于該文件的FileStream對(duì)象,方法如下:DimfstreamAsNewFileStream(

"C:\myfile.dat",FileMode.Open,FileAccess.Read)DimbwAsBinaryWriterbw=NewBinaryWriter(fstream)8.3.3二進(jìn)制文件讀寫(xiě)建立BinaryWriter對(duì)象后,就可以使用它提供的幾種方法向二進(jìn)制文件中寫(xiě)入不同類(lèi)型的數(shù)據(jù),BinaryWriter類(lèi)提供的各種方法見(jiàn)表8.18。8.3.4應(yīng)用示例【例8.2】選擇一個(gè)磁盤(pán)中的文本文件,利用StreamReader對(duì)象,讀取文本文件內(nèi)容并顯示在文本框中,修改顯示的文件內(nèi)容后,再利用StreamWriter對(duì)象把文本框中修改后的內(nèi)容寫(xiě)回到該文件中。1.界面設(shè)計(jì)設(shè)置一個(gè)顯示選擇文件的文本框和一個(gè)顯示打開(kāi)的文件內(nèi)容的多行文本框(TextBox)、一個(gè)標(biāo)簽(Label)及3個(gè)命令按鈕(Button)。另外,為了能打開(kāi)一個(gè)文件,還要添加一個(gè)打開(kāi)文件對(duì)話框控件OpenFileDialog1。8.3.4

溫馨提示

  • 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)論