C#系列之{流和序列化}
不论何种类型的文件都可以表示为一个字节数组。(Byte[])
一、文件复制 (示例)
首先建立一个类似管道的东西将文件和内存中的程序连接,并将文件按字节发送。
为了保存接收到的文件字节,需要创建一个字节数组。完成传递后,文件就以字节数组的方式保存在了内存中。
接下来再将内存中的字节数组保存到文件中,过程与前述正好相反。
在C#中,流被实现为Stream类及一系列的子类,同时还有一些装饰类和帮助类。流的最主要用途就是与应用程序外部的文件或数据源进行数交互。比如,在访问文件时,有文件流(FileStream);在访问网络时,有网络流(NetworkStream)。
不论何种类型的流,都继承自基类Stream,因此它们的使用方式基本是一致的。
示例代码:
Stream source = new FileStream(@"c:\a.bmp",FileMode.Open,FileAccess.Read); byte[] buffer = new byte[source.Length]; int byteRead = source.Read(buffer, 0, (int)source.Length);Stream target = new FileStream(@"c:\b.bmp", FileMode.Create, FileAccess.Write); target.Write(buffer, 0, buffer.Length); target.Dispose();
二、文件复制(大文件复制示例)
当传递一个大文件,或者无法知道文件大小时,采用分批读取和写入,每次只读取部分字节,直到文件尾。
示例代码:
int buffersize = 10240;//每次读10KB; Stream source = new FileStream(@"c:\abc.exe", FileMode.Open, FileAccess.Read); Stream target = new FileStream(@"c:\aa.exe", FileMode.Create, FileAccess.Write);byte[] buffer = new byte[buffersize]; int bytesRead; do {bytesRead = source.Read(buffer, 0, buffersize);target.Write(buffer, 0, bytesRead); } while (bytesRead > 0);source.Dispose(); target.Dispose();
流的类型体系
流的类型体系包括基础流,装饰器流,包装器类,帮助类。
一、基础流
转载于:https://www.cnblogs.com/tinaluo/p/7509553.html
C#系列之{流和序列化}相关推荐
- Java深度学习系列——对象流和序列化
前言: 我是张哲,一位在互联网上不愿透露姓名的小学员,接下来大家看到的所有内容都是我背写的知识点,这里的知识点和你所学习到的不同,我中和了我的一些书籍和网上刷的面试笔记,相信这里能让你接触到更深入的知 ...
- java流与文件——对象流和序列化
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--对象流和序列化 的相关知识: 0.2) for source code , pleas ...
- C#二进制流的序列化和反序列化操作
C#项目中较多使用了序列化和反序列化,较为常用的序列化和反序列化操作有二进制流,JSON,XML等,现在介绍一下.net中二进制流的序列化和反序列化操作方法: 1.将对象序列化为二进制流: /// & ...
- java-IO流(4)-对象流及其序列化介绍
目录 1对象流 2序列化和反序列化 2.1序列化ObjectOutputStream 2.1.1声明形式 2.1.2构造函数 2.1.3特有方法 2.2反序列化ObjectInputStream 2. ...
- day11-字符流、属性集、缓冲流、转换流、序列化流笔记
学习目标 - 能够使用FileWriter写数据的5个方法- public void write(int c) :写出一个字符.- public void write(char[] cbuf) 写字符 ...
- Java基础之——缓冲流、转换流、序列化流、打印流
缓冲流.转换流.序列化流 1.缓冲流 见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等.这些功能更为强大的流,都是在基本的流对象基础之上创建而来的, ...
- day10【缓冲流、转换流、序列化流、打印流】
[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能够使用缓冲 ...
- java(十)【属性集,缓冲流、转换流、序列化流】
day10[缓冲流.转换流.序列化流] 今日目标 IO资源的处理. finnally释放资源 jdk 1.7开始的新技术 try-with-resources 缓冲流 提高字节流和字符流读写数据的性能 ...
- 【缓冲流、转换流、序列化流】
[缓冲流.转换流.序列化流] 今日目标 IO资源的处理. finnally释放资源 jdk 1.7开始的新技术 try-with-resources 缓冲流 提高字节流和字符流读写数据的性能的. 转换 ...
- 【02】Java进阶:13-IO资源的处理、属性集、缓冲流、转换流、序列化、打印流、装饰设计模式、commons-io工具包
day13[Properties类.缓冲流.转换流.序列化流.装饰者模式.commons-io工具包] 今日内容 IO异常处理 Properties类 缓冲流 转换流 序列化\反序列化流 打印流 装饰 ...
最新文章
- ArrayAdapter requires the resource ID to be a TextView
- 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事
- Mac安装MySQL数据库
- Windows7下用VirtualBox安装Ubuntu网卡配置
- java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况
- 设计模式之 里氏替换原则
- javaweb学习总结七(XML语言作用、语法)
- typedef用法(二)
- 1. crontab 简介
- SoapUI、Jmeter、Postman三种接口测试工具的比较分析——灰蓝
- 安全龙网络安全攻防实验室
- 抖音无水印视频下载,不用借助第三方网站【详细教程】
- numpy.dot()和x.dot(y)函数介绍和示例
- Mybatis+Servlet+jsp
- 以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法.
- 母牛的故事【HDOJ2018】
- yunos的工程模式
- 《测绘综合能力》——大地测量
- 乐视网:截至2月已逾期金融机构借款类债务20.84亿元
- 编程如何修改Revit族类型名称