你的位置:首页 > ASP.net教程

[ASP.net教程]关于c#流


C# 流总结

前言

 本篇文章简单总结了在C#编程中经常会用到的一些流。比如说FileStream、MemoryStream、 BufferedStream、 NetWorkStream、 StreamReader/StreamWriter、 TextReader/TextWriter等的简单用法。

 

内容

一  FileStream类

     FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息。有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类。

     从磁盘上的文件中读取内容:

FileStream读取文件

     将数据写入磁盘文件:

FileStream写入文件

 

二  MemoryStream类

     MemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们。

     MemoryStream操作字符串:

MemoryStream解析数据

 

三  BufferedStream类

     BufferedStream类主要也是用来处理流数据的,但是该类主要的功能是用来封装其他流类。为什么要封装其他流类,这么做的意义是什么?按照微软的话说主要是减少某些流直接操作存储设备的时间。对于一些流来说直接向磁盘中存储数据这种做法的效率并不高,用BufferedStream包装过的流,先在内存中进行统一的处理再向磁盘中写入数据,也会提高写入的效率。

     将磁盘上的一个文件写入到磁盘上的另一个文件中:

BufferedStream封装流

     实际测试中,封装流的方法在效率上并没有太多的提升。使用其他流也可以封装文件流。如果想要保证不频繁的读取磁盘其实只要保证代码不这样做就可以了,所以其实在代码上多加控制,也能保证程序不会经常的操作磁盘。

 

四 NetWorkStream类

    NetWorkStream类是专门用来处理服务器与客户端通信的流。它在网络编程中经常使用,主要是用来处理类似Socket、TcpClient和TcpListener这些类中得到的流。

    简单的TCP同步方式服务器与客户端通信:

服务器
客户端

 

五  StreamReader/StreamWriter类

     StreamReader/StreamWriter主要用来处理流数据。它们分别提供了高效的流读取/写入功能。

     读取与写入:

StreamReader/Writer读写

 

六  TextReader/TextWriter类

     TextReader/TextWriter类主要用来处理流数据。它们分别提供了高效的文本流读取/写入功能。

     读取与写入:

TextReader/Writer读写

 

注意事项:

1.流使用后必须要关闭。

2.把流中数据加载到内存时要考虑内存溢出等问题。