在我学开发编程的时候对于流这个概念我就不能够深入的理解,在后来的工作中慢慢的对流有了深入的了解。其实”流”是字节序列的抽象概念,或者说是计算机在处理文件或数据时产生的二进制序列。下面我们将通过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地址\共享文件名\新文件名”的格式来实现文件的拷贝。这里需要注意一点是:在指定的局域网内的计算机中的共享文件夹中要建立新的文件必须具有写的权限。这可以在“共享文件”对话框中设置。
【编辑推荐】