1.对于机器的角度来看,任何文件都是二进制的0和1.

2.   位:bit,一个1或0就是1位。

字节:byte,每8位一个字节。一个字节的范围就是00000000到1111111,换成10进制就是0到255.

字节数组: 通常文件由许多字节构成,则需定义一个字节数组。

3.流:举例--将图片1.bmp从c盘复制到d盘。

复制的程序运行在内存中,而文件在磁盘上。怎么办?实际上需要一个东西将两者连接起来,流就是这个桥梁。

字节数组所代表的文件通过流写到内存中。 通过上述过程明确流的作用:与应用程序外部的数据进行交换(数据传输)。

分类:文件流filestream   网络流networstream  等。

流和字节数组:字节数组是静态容器它本身保存全部数据。而流按字节的次序进行访问可以一次访问一个字节也可以访问一段连续的字节。

4.流的应用举例:文件复制。一次性复制和分配复制两种方式。 一次性复制不适合文件较大时候使用。

//一次性复制
//通过文件流建立磁盘文件和应用程序的关系
Stream source=new FileStream(@"d:\1.bmp",filemode.open,fileaccess.read); //定义用于保存文件的字节数组 数组是定长的所以使用length属性获取流长度。
byte[] buffer=new byte[source.length];//length属性对网络流不可访问 //通过流对象上的read方法将文件以字节的方式读到buffer即字节数组中。
int bytesread=source.read(buffer,0,source.length); //将应用程序中字节数组保存到文件
stream target=new FileStream(@"c:\1.bmp",filemode.create,fileaccess.write);
target.write(buffer,0,buffer.length);
target.dispose(); //第二种方法 分批复制
int buffersize=10240 //10k
byte[] buffer=new byte[buffersize];
int bytesread
do
{
bytesread=source.read(buffer,0,buffersize);
target.write(buffer,0,bytesread);
}while (bytesread>0)//read方法返回读取到的字节数,返回0说明到了流末尾。
source.dispose();
targe.dispose();

  

NET中级课--文件,流,序列化1的更多相关文章

  1. NET中级课--文件,流,序列化2

    1.流的类型体系: 基础流    装饰器流    包装器类    帮助类 2.               stream file~     memory~     network~ stream是个 ...

  2. NET中级课--文件,流,序列化3

    1.序列化:将对象及状态保存起来. 反序列化就是逆操作. 2.NET提供了一个接口:System.runtime.serialization.IFormatter接口, 还有实现了这个接口的类Bina ...

  3. 文件I/O:文件流→序列化

    ★文件流 文件操作是最简单最直接也是最容易想到的一种方式,我们说的文件操作不仅仅是通过FileInputStream/FileOutputStream这么“裸”的方式直接把数据写入到本地文件(像我以前 ...

  4. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  5. Java总结——文件&流

    最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多.脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理 ...

  6. [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化

    [.net 面向对象程序设计进阶]  (9)  序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...

  7. Java IO详解(六)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  8. web api 如何通过接收文件流的方式,接收客户端及前端上传的文件

    服务端接收文件流代码: public async Task<HttpResponseMessage> ReceiveFileByStream() { var stream = HttpCo ...

  9. IO流--序列化流与反序列化流

    IO流--序列化流与反序列化流: 序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream(); 反序列化流:把文本文件中的流对象还原成对象ObjectInputSream(): ...

随机推荐

  1. 解决 innerHTML 在 IE6-IE9中不能赋值的bug

    在MSDN可以了解跟多,关于innerHTML的介绍,但是在这里只要是解决表格部分问题 MSDN上有这样的记录: When using innerHTML to insert script, you ...

  2. HTML5 prefetch即预加载

    原文地址 声明:此文带着自己的理解,不完全按原文翻译 prefetch 即预加载,在用户需要前我们就将所需的资源加载完毕. 有了浏览器缓存,为何还需要预加载? 用户可能是第一次访问网站,此时还无缓存 ...

  3. Windows服务的基本配置和安装

    使用windows服务:1.新建项目--Windows服务2.在Service.cs编写程序3.配置:3.1.切换到设计视图,选择添加安装程序3.2.切换到安装程序ProjectInstaller.c ...

  4. c#转码解码

    ///反转码                          mdata[k].MNAME = unescape(mdata[k].MNAME);程家楠 13:51:00 Microsoft.JSc ...

  5. asp.net 正则表达式

    在平时的开发中常常用到替换法:  普通的字符串替换可以使用string.replace(string,string),但是比较难解决HTML文本的替换. 经我几番查找,终也找出解决办法:正则匹配替换. ...

  6. Oracle游标cursor2显示的游标等

    --在一中我们介绍了实现过程 select *from stud; declare cursor mycur is select id,name from stud;--1声明 v_id intege ...

  7. ORACLE SQL单行函数(二)【weber出品必属精品】

    11.dual:虚表,任何用户都可以使用,表结构如下: SQL> desc dual Name Null? Type -------------------------------------- ...

  8. C# 扩展方法克隆实体类

    using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Ru ...

  9. HDU 5900 - QSC and Master [ DP ]

    题意: 给n件物品,有key和value 每次可以把相邻的 GCD(key[i], key[i+1]) != 1 的两件物品,问移除的物品的总value最多是多少 key : 1 3 4 2  移除3 ...

  10. c# 中的线程和同步

    一.新建线程的3种方法 a)异步委托:b)Thread类:c)线程池: 二.异步委托 1.简单使用,检查委托是否完成其任务 a) 通过 BeginInvoke()  的返回值IAsyncResult ...