經(jīng)驗之談VB.NET流操作文件兩個案例解析
在我學(xué)開發(fā)編程的時候?qū)τ诹鬟@個概念我就不能夠深入的理解,在后來的工作中慢慢的對流有了深入的了解。其實”流”是字節(jié)序列的抽象概念,或者說是計算機在處理文件或數(shù)據(jù)時產(chǎn)生的二進制序列。下面我們將通過4個簡單的例子來學(xué)習(xí)使用.net中的流類實現(xiàn)對文件的操作。在學(xué)習(xí)這2個簡單的例子前我們有必要對VB.NET流操作文件進行一個簡單的介紹。
大家都知道“流”的英文是“Stream”,所以在.net中也就是直接用的Stream來表示流類。Stream是所有流的抽象基類。一般來說是不會直接使用Stream 類的,因為它提供的功能并不強大。通常的方法是使用它的派生類(有些書稱為子代類),這些派生類中使用的最多的是文件流類,對于文件流來說它大致包含了文件的建立,文件夾的建立,文件的轉(zhuǎn)移,文件的讀寫這4中功能,在下面的內(nèi)容中我們將學(xué)會如何實現(xiàn)這4中功能。
在文件流類中最重要的是Read 和 Write 方法,這兩個方法是完成文件讀寫所必須的。在完成對文件的讀寫訪問后一定要記得調(diào)用 Close將流關(guān)閉,否則將會出現(xiàn)當(dāng)從其他程序訪問此文件時系統(tǒng)將提示文件無法訪問之類的錯誤信息。通過上面的簡單介紹,我們已經(jīng)大致對流有了一個簡單的了解。下面我們就來學(xué)習(xí)這2個編程例子。這2個例子分別是:通過流實現(xiàn)本地計算機中的文件轉(zhuǎn)移,通過流實現(xiàn)計算機中文件的網(wǎng)絡(luò)轉(zhuǎn)移或稱為網(wǎng)絡(luò)文件傳輸,讀寫文本文件,讀寫二進制文件。
VB.NET流操作文件示例一 本地文件轉(zhuǎn)移
本示例將任意文件進行流化處理后,在指定的位置產(chǎn)生一個相同文件的副本,即實現(xiàn)文件的拷貝功能。
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
- Handles Button1.Click
- FileStreamL()‘實現(xiàn)文件的拷貝功能
- End Sub
- Sub FileStreamL()
- Dim fileinf As New System.IO.FileInfo("c:\dd.doc")
- ‘實例化FileInfo類
- Dim byt(fileinf.Length() - 1) As Byte
- ‘獲得原始文件的大小
- Dim files As New System.IO.FileStream("c:\dd.doc", IO.FileMode.Open,
- IO.FileAccess.ReadWrite)
- ‘實例化FileStream類
- Dim filesw As New System.IO.FileStream("c:\kp.doc",IO.FileMode.OpenOrCreate)
- ‘實例化FileStream類,并建立一個空的新文件
- files.Read(byt, 0, byt.Length)
- ‘讀原文件內(nèi)容到byt數(shù)組中
- filesw.Write(byt, 0, byt.Length)
- ‘將byt數(shù)組的內(nèi)容寫到新文件中
- files.Close()‘關(guān)閉流
- filesw.Close()‘關(guān)閉流
- End Sub
程序說明:在這段代碼中我們創(chuàng)建了一個FileStreamL過程,在這個過程中首先聲明FileInfo類利用此類獲的原始文件的大小然后在通過聲明兩個FileStream類,第一個是用來對原始文件進行流讀操作,即將其數(shù)據(jù)讀入內(nèi)存,并保存在Byt數(shù)組中。第二個FileStream類是用來將保存在Byt數(shù)組中的數(shù)據(jù)寫入到指定的新文件中,本代碼的原始文件是C盤中的dd.doc文件,新文件是C盤中的“kp.doc”文件。本代碼括號中的參數(shù)在MSDN中都有詳細的解釋,這里就不在討論了。
VB.NET流操作文件示例二 網(wǎng)絡(luò)文件的轉(zhuǎn)移
本示例將任意文件進行流化處理后,在局域網(wǎng)的指定計算機中產(chǎn)生一個相同文件的副本,即實現(xiàn)文件的網(wǎng)絡(luò)拷貝功能。
- Private Sub Button2_Click(ByVal sender As System.Object,
- ByVal e As System.EventArgs) Handles Button2.Click
- FileStreamN()
- End Sub
- Sub FileStreamN()
- Dim fileinf As New System.IO.FileInfo("c:\dd.doc")
- Dim byt(fileinf.Length() - 1) As Byte
- Dim files As New System.IO.FileStream
- ("c:\dd.doc", IO.FileMode.Open, IO.FileAccess.ReadWrite)
- Dim filesw As New System.IO.FileStream
- ("\\192.168.0.99\c\kp.doc", IO.FileMode.OpenOrCreate)
- ‘在要目標機上建立一個空的新文件
- files.Read(byt, 0, byt.Length)
- filesw.Write(byt, 0, byt.Length)
- files.Close()
- filesw.Close()
- End Sub
程序說明:這段代碼和前面的唯一不同是第二個FileStream中建立新文件的位置,在這里筆者使用的是:“IP地址\共享文件名\新文件名”的格式來實現(xiàn)文件的拷貝。這里需要注意一點是:在指定的局域網(wǎng)內(nèi)的計算機中的共享文件夾中要建立新的文件必須具有寫的權(quán)限。這可以在“共享文件”對話框中設(shè)置。
【編輯推薦】