不论何种类型的文件都可以表示为一个字节数组。(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#系列之{流和序列化}相关推荐

  1. Java深度学习系列——对象流和序列化

    前言: 我是张哲,一位在互联网上不愿透露姓名的小学员,接下来大家看到的所有内容都是我背写的知识点,这里的知识点和你所学习到的不同,我中和了我的一些书籍和网上刷的面试笔记,相信这里能让你接触到更深入的知 ...

  2. java流与文件——对象流和序列化

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--对象流和序列化 的相关知识: 0.2) for source code , pleas ...

  3. C#二进制流的序列化和反序列化操作

    C#项目中较多使用了序列化和反序列化,较为常用的序列化和反序列化操作有二进制流,JSON,XML等,现在介绍一下.net中二进制流的序列化和反序列化操作方法: 1.将对象序列化为二进制流: /// & ...

  4. java-IO流(4)-对象流及其序列化介绍

    目录 1对象流 2序列化和反序列化 2.1序列化ObjectOutputStream 2.1.1声明形式 2.1.2构造函数 2.1.3特有方法 2.2反序列化ObjectInputStream 2. ...

  5. day11-字符流、属性集、缓冲流、转换流、序列化流笔记

    学习目标 - 能够使用FileWriter写数据的5个方法- public void write(int c) :写出一个字符.- public void write(char[] cbuf) 写字符 ...

  6. Java基础之——缓冲流、转换流、序列化流、打印流

    缓冲流.转换流.序列化流 1.缓冲流 见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等.这些功能更为强大的流,都是在基本的流对象基础之上创建而来的, ...

  7. day10【缓冲流、转换流、序列化流、打印流】

    [缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能够使用缓冲 ...

  8. java(十)【属性集,缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 今日目标 IO资源的处理. finnally释放资源 jdk 1.7开始的新技术 try-with-resources 缓冲流 提高字节流和字符流读写数据的性能 ...

  9. 【缓冲流、转换流、序列化流】

    [缓冲流.转换流.序列化流] 今日目标 IO资源的处理. finnally释放资源 jdk 1.7开始的新技术 try-with-resources 缓冲流 提高字节流和字符流读写数据的性能的. 转换 ...

  10. 【02】Java进阶:13-IO资源的处理、属性集、缓冲流、转换流、序列化、打印流、装饰设计模式、commons-io工具包

    day13[Properties类.缓冲流.转换流.序列化流.装饰者模式.commons-io工具包] 今日内容 IO异常处理 Properties类 缓冲流 转换流 序列化\反序列化流 打印流 装饰 ...

最新文章

  1. ArrayAdapter requires the resource ID to be a TextView
  2. 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事
  3. Mac安装MySQL数据库
  4. Windows7下用VirtualBox安装Ubuntu网卡配置
  5. java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况
  6. 设计模式之 里氏替换原则
  7. javaweb学习总结七(XML语言作用、语法)
  8. typedef用法(二)
  9. 1. crontab 简介
  10. SoapUI、Jmeter、Postman三种接口测试工具的比较分析——灰蓝
  11. 安全龙网络安全攻防实验室
  12. 抖音无水印视频下载,不用借助第三方网站【详细教程】
  13. numpy.dot()和x.dot(y)函数介绍和示例
  14. Mybatis+Servlet+jsp
  15. 以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法.
  16. 母牛的故事【HDOJ2018】
  17. yunos的工程模式
  18. 《测绘综合能力》——大地测量
  19. 乐视网:截至2月已逾期金融机构借款类债务20.84亿元
  20. 编程如何修改Revit族类型名称

热门文章

  1. USACO-Section2.1 The Castle (深度优先搜索)
  2. glxinfo: not found
  3. Java 网络实例一(获取指定主机的IP地址、查看端口是否已使用、获取本机ip地址及主机名、获取远程文件大小)
  4. 绘图解谜:公钥、私钥、证书
  5. 《论文笔记》ROBUST MAP ALIGNMENT FOR COOPERATIVE VISUAL SLAM
  6. input全选和取消全选
  7. 编程题练习 两个栈实现队列
  8. css3 media媒体查询器用法总结
  9. Redis介绍以及安装(Linux与windows)
  10. 关于360举报恶意软件有数字签名的回复