C#中数据流(文件流、内存流、网络流等)相关知识点梳理

本文概述了C#中数据流的核心应用,包括FileStream处理磁盘文件、MemoryStream内存操作和NetWorkStream网络通信,介绍了它们的使用方法和实例。

基本概念

C#中数据流的应用体现在方方面面,现在针其常用的几种类进行一次梳理。
数据流包括文件流(FileStream)、内存流(MemoryStream)、网络流(NetworkStream)以及读写流如StreamReader、StreamWriter、BinaryReader和BinaryWriter等。
数据流是什么?
按照定义,数据流是是对串行传输数据的一种抽象表示,是对I/O的一种抽象。我们可以通过将文件夹数据、代码生成结果、设备、内存等各种形式的数据用流的方式进行传输。从程序的角度出发,如果将数据从来源取出,可以用StreamReader把数据储存在内存缓冲区;如果将数据写入目的地,可以使用StreamWriter把内存缓冲区的数据写入目标地址。
数据流的操作包括写、读,查找,其写入和读取操作都是基于字节的。
Stream是一种虚拟类,是所有数据流的基类,无法创建实例。

FileStream

FileStream类主要用于读写磁盘文件,其读写方法如下所示:

//文件流读取
            FileStream fileStream = File.Open(@"D:\Key.txt", FileMode.Open);//初始化待读取文件流

            byte[] array = new byte[fileStream.Length];//初始化字节数组,用来存储读取到的字节
            fileStream.Read(array, 0, array.Length);//读取文件流中数据,写入到字节数组中
            fileStream.Close(); //关闭流
            string str = Encoding.Default.GetString(array);//将字节数组内容转化为字符串
            Console.WriteLine(str);

            //写文件流
            byte[] array1 = new byte[1024];
            array1 = Encoding.UTF8.GetBytes(str);
            FileStream fileStream1 = new FileStream(@"D:\Key.txt", FileMode.OpenOrCreate, FileAccess.Write);
            fileStream1.Write(array1, 0, array1.Length);

NetWorkStream

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

SocketClient = Listener.AcceptSocket();         //等待客户端的socket
NetStream = new NetworkStream(SocketClient);    //有客户端连接成功后,创建网络流
ServerReader = new StreamReader(NetStream);     //读数据
ServerWriter = new StreamWriter(NetStream);     //写数据    

MemoryStream

MemoryStream类用于保存数据到内存中并可以直接访问内存数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以用MemoryStream类来存储处理。内存流相对于字节数组而言,具有流特有的特性,并且容量可自动增长,在数据加密以及对长度不定的数据进行缓存等场合,使用内存流比较方便。
内存流有多种构造函数,都有不同的作用,但基本都是对内存流容量的定义。

            MemoryStream myStream = new MemoryStream();

            //将待写入数据从字符串转换为字节数组
            UnicodeEncoding encoder = new UnicodeEncoding();
            byte[] bytes = encoder.GetBytes("魑魅魍魉);

            //向内存流中写入数据
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("第{0}写入新数据", i);
                myStream.Write(bytes, 0, bytes.Length);
            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值