NET中级课--文件,流,序列化1
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的更多相关文章
- NET中级课--文件,流,序列化2
1.流的类型体系: 基础流 装饰器流 包装器类 帮助类 2. stream file~ memory~ network~ stream是个 ...
- NET中级课--文件,流,序列化3
1.序列化:将对象及状态保存起来. 反序列化就是逆操作. 2.NET提供了一个接口:System.runtime.serialization.IFormatter接口, 还有实现了这个接口的类Bina ...
- 文件I/O:文件流→序列化
★文件流 文件操作是最简单最直接也是最容易想到的一种方式,我们说的文件操作不仅仅是通过FileInputStream/FileOutputStream这么“裸”的方式直接把数据写入到本地文件(像我以前 ...
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...
- Java总结——文件&流
最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多.脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理 ...
- [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化
[.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...
- Java IO详解(六)------随机访问文件流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
- web api 如何通过接收文件流的方式,接收客户端及前端上传的文件
服务端接收文件流代码: public async Task<HttpResponseMessage> ReceiveFileByStream() { var stream = HttpCo ...
- IO流--序列化流与反序列化流
IO流--序列化流与反序列化流: 序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream(); 反序列化流:把文本文件中的流对象还原成对象ObjectInputSream(): ...
随机推荐
- python-登录-注册-修改密码
该脚本实现了,登录,注册,修改密码功能. #!/usr/bin/env python # -*- coding:utf-8 -*- #pangguoping import os def login(u ...
- [MVC4-基礎] 使用DataAnnotations+jQuery進行表單驗證
我目前有以下表單,Select部分因為必須上一層有選擇下層才有資料,因此使用jQuery驗證問題類型是否有選擇就好,而問題描述要驗證是否為空,這裡採用MVC內建的DataAnnotations來驗證. ...
- 新闻滚动marquee标签
先上代码: <marquee behavior="" direction="up" onMouseOver="this.stop()" ...
- FpSpread添加表头(列名)标注
for (int j = 0; j < fp.ActiveSheetView.ColumnCount; j++) { fp.ActiveSheetView.ColumnHeader.Cells[ ...
- iOS的Bundle资源束制作
在静态库的制作中,很多时候我们的静态库也是带着文件,图片和多媒体资源的. 若只是直接加入到项目中也是可以,但是,考虑到方便管理(方便插件使用者的管理),我们希望把插件的资源文件打成一个包来管理. 当然 ...
- poj3258 二分 最小值最大化问题
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10842 Accepted: 4654 ...
- zeromq源码分析笔记之无锁队列ypipe_t(3)
在上一篇中说到了mailbox_t的底层实际上使用了管道ypipe_t来存储命令.而ypipe_t实质上是一个无锁队列,其底层使用了yqueue_t队列,ypipe_t是对yueue_t的再包装,所以 ...
- MyISAM 存储引擎
在MYSQL 5.1 以及之前的版本,MyISAM 是默认的存储引擎.MyISAM 提供了大量的特性,包括全文索引,压缩,空间函数(gis)等,但是MyISAM不支持事务和行级锁,而且有一个毫无疑问的 ...
- IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)
IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...
- #define XBYTE ((unsigned char volatile xdata *) 0)
今天在看别人的CAN总线程序的时候,突然发现了这么一句宏定义:#define XBYTE ((unsigned char volatile xdata *) 0),以前都没注意到过.后来查了一下,发现 ...