实例讲解.NET中的流处理
marginwidth="0" marginheight="0" src="http://sogou.com/cpc_ads?pid=bearhunter&ct=context&fmt=v_200_200&iw=200&ih=200&charset=gb2312&c_bo=FFFFFF&c_bg=FFFFFF&c_li=0055E5&c_te=000000&c_bt=000000&c_hl=FF0900&sv=1&sl=1&hl=0&sohuurl=http://203.208.37.104/search?q=cache:EajadQh9V1kJ:www.dotnetsky.net/showtopic-263.html+c%2523+BinaryReader%25E7%25B1%25BB%26hl=zh-CN%26ct=clnk%26cd=60%26gl=cn%26lr=lang_zh-CN|lang_zh-TW%26st_usg=ALhdy29IrNJo37Y7j0QZZokkf3Hi3FFmMg" frameborder="0" width="200" scrolling="no" height="200" allowtransparency="allowtransparency">
在学习这4个简单的例子前我们有必要对.net中的流进行一个简单的介绍。
大家都知道“流”的英文是“Stream”,所以在.net中也就是直接用的Stream来表示流 类。Stream是所有流的抽象基 类。一般来说是不会直接使用Stream 类的,因为它提供的功能并不强大。通常的方法是使用它的派生 类(有些书称为子代 类),这些派生 类中使用的最多的是文件流 类,对于文件流来说它大致包含了文件的建立,文件夹的建立,文件的转移,文件的读写这4中功能,在下面的内容中我们将学会如何实现这4中功能。
在文件流 类中最重要的是Read 和 Write 方法,这两个方法是完成文件读写所必须的。在完成对文件的读写访问后一定要记得调用 Close将流关闭,否则将会出现当从其他程序访问此文件时系统将提示文件无法访问之 类的错误信息。
通过上面的简单介绍,我们已经大致对流有了一个简单的了解。下面我们就来学习这4个编程例子。
这4个例子分别是:通过流实现本地计算机中的文件转移,通过流实现计算机中文件的网络转移或称为网络文件传输,读写文本文件,读写二进制文件。
示例一 本地文件转移
本示例将任意文件进行流化处理后,在指定的位置产生一个相同文件的副本,即实现文件的拷贝功能。
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中都有详细的解释,这里就不在讨论了。
示例二 网络文件的转移
本示例将任意文件进行流化处理后,在局域网的指定计算机中产生一个相同文件的副本,即实现文件的网络拷贝功能。
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地址/共享文件名/新文件名”的格式来实现文件的拷贝。这里需要注意一点是:在指定的局域网内的计算机中的共享文件夹中要建立新的文件必须具有写的权限。这可以在“共享文件”对话框中设置。
示例三 读写文本文件
在textstreamWrite过程中通过File 类建立一个文本文件,然后使用StreamWriter 类将文本框中的文字写到建立的文本文件中。在textstreamread过程中利用File 类打开刚才建立的文本文件,并使用StreamReader 类读取这个文本文件的内容,将它显示在文本框中。
Sub textstreamWrite()
Dim txtstw As System.IO.StreamWriter =System.IO.File.CreateText("c:/pp.txt")
txtstw.Write(TextBox1.Text)‘将文本框中文字写入文本文件中
txtstw.Close()
End Sub
Sub textstreamread()
Dim txtstr As System.IO.StreamReader = System.IO.File.OpenText
("c:/pp.txt")
TextBox2.Text = txtstr.ReadToEnd()
‘读取文本文件的内容到文本框中
txtstr.Close()
End Sub
Private Sub Button3_Click
(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click
textstreamWrite()
End Sub
Private Sub Button4_Click
(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button4.Click
textstreamread()
End Sub
程序说明:在本代码中使用File 类返回的流对象声明StreamWriter和StreamReader 类,这两个 类是专门用来读写文本文流的 类。然后使用Write和ReadToEnd方法来写入和读出文本文件的内容。
示例四 二进制文件流的读写
在bitstreamwrite过程中通过FileStream 类建立一个数据文件,然后使用BinaryWriter 类将文本框中的文字写到建立的文本文件中。在bitstreamread过程中利用FileStream 类打开刚才建立的数据文件,并使用 BinaryReader 类读取这个数据文件的内容,将它显示在文本框中。
Sub bitstreamwrite()
Dim filestr As New System.IO.FileStream
("c:/ss.data", IO.FileMode.OpenOrCreate)
Dim bitsw As New System.IO.BinaryWriter(filestr)
bitsw.Write(TextBox3.Text)
‘将文本框的内容写入数据文件中
bitsw.Close()
filestr.Close()
End Sub
Private Sub Button5_Click
(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button5.Click bitstreamwrite()
End Sub
Sub bitstreamread()
Dim filestr As New System.IO.FileStream
("c:/ss.data", IO.FileMode.OpenOrCreate)
Dim bitsw As New System.IO. BinaryReader(filestr)
TextBox4.Text = bitsw.ReadString()
‘读去数据文件内容到文本框中
bitsw.Close()
filestr.Close()
End Sub
Private Sub Button6_Click
(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button6.Click bitstreamread()
End Sub
程序说明:在本代码中使用FileStream 类来建立和读取数据文件,然后使用BinaryWriter来将文本框中的文字写入数据文件中,然后在从 BinaryReader 类将数据文件中的内容读取出来显示在文本框中。
总结:本文通过4个例子讲解了.net中的流对象的编程基础。其实对于流对象来说,它的使用都是和文件相结合的。比如本文的例子中每一个流对象的建立都是和文件相关的,如果在你编写有关流对象的代码时发现语句中没有与文件相关的语句,那吗这些语句多数情况下是错误或不完整的。