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