基本概念

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);}

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

  1. IO流的字符流+对象流+打印流+内存流+随机访问流(2)

    IO流的字符流+对象流+打印流+内存流+随机访问流(2) 一.字符流 1.利用字符输出转换流 向文件写入数据 1.文件存在的情况 2.文件不存在的情况 经验:所有的输出流,当文件不存在时都会创建文件 ...

  2. c语言中把文件看成什么流,C语言中的文件流

    所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3.mp4.txt.bmp.jpg.exe.rmvb等等.这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中 ...

  3. ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流

    1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...

  4. Java核心类库-IO-字节数组流/内存流

    内存流(数组流): 把数据先临时存在数组中,待会再从数组中获取出来. 1. 字节内存流:ByteArrayInputStream/ByteArrayOutputStream 2. 字符内存流:Char ...

  5. .net 流(Stream) - 文件流、内存流、网络流

    一.文件流 FileStream FileStream流继承与Stream类,一个FileStream类的实例实际上代表一个文件流,使用FileStream类可以对文件系统上是文件进行读取.写入.打开 ...

  6. 配置内存中OLTP文件组提高性能

    在今天的文章里,我想谈下使用内存中OLTP的内存优化文件组来获得持久性,还有如何配置它来获得高性能.在进入正题前,我想简单介绍下使用你数据库里这个特定文件组,内存OLTP是如何获得持久性的. 内存中O ...

  7. linux命令打包文件,Linux系统中打包文件的命令详解

    linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...

  8. Ubuntu 中改变文件的默认打开方式(转)

     源自:Ubuntu 中改变文件的默认打开方式 1. 相关配置文件 [plain] view plaincopyprint? 全局配置 /etc/gnome/defaults.list /usr/sh ...

  9. C#数据流:文件流、内存流、网络流

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 C#编程中数据流的使用一直不很熟练,没有一个系统的认识,但是它的重要性显然不言而喻.System.IO下的Stream类是所有数据流的基类,当我们对数 ...

最新文章

  1. formRef=React.createRef() this.formRef.current为null
  2. SpringBoot 中 @RequestBody的正确使用方法
  3. 樊登读书分享ppt_樊登读书精华分享-《分手后,成为更好的自己》
  4. pytorch创建tensor
  5. struts2路径配置_Struts 2结果路径配置示例
  6. Android - 找到当前类的Context
  7. decimal简单问题
  8. python对象的相关术语
  9. ZStack的VPC特性详解及实战
  10. 让数据分析更easy的选择—贪心科技AI商业数据分析课程深度测评
  11. 链家网页爬虫_爬虫-链家网租金数据
  12. QIIME2教程. 03老司机上路指南Experience(2020.11)
  13. 英语语法(1)——简单句
  14. ApeCoin计划推出自己的区块链,Messari分析师们怎么看?
  15. iOS 图片捏合放大缩小 点击放大缩小
  16. 计算平均值和标准方差。
  17. 全国信息化和软件服务业工作座谈会召开
  18. 小巧精致的“隐形”耳机,让你排除干扰安心入眠,Wedoking 二代 无线睡眠耳机上手
  19. 【自学考试】计算机操作系统概论02323 2017年版大纲
  20. 求自动检测技术及应用课后练习答案

热门文章

  1. C#配置及使用log4net
  2. JS,Jquery 调用 C#WebService
  3. js(Dom+Bom)第七天(1)
  4. SQL重复记录查询的几种方法
  5. 在sql当中为了让数据做缓存做with as的操作
  6. linux新建用户,用户组,以及权限的分配(摘自博客园)
  7. 帮助你生成响应式布局的CSS模板 - xyCSS
  8. java调用oracle 存储过程 以及游标使用
  9. 用代理技术实现简单的AOP框架
  10. vue --- 从模块从父元素获取数据