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(): ...
随机推荐
- table细线
table { border-collapse: collapse; } table td { border: 1px solid #CCCCCC; }
- Wireshark 使用教程
原文出处 http://blog.sina.com.cn/s/blog_5d527ff00100dwph.html Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数 ...
- ASP.net(C#)利用SQL Server实现注册和登陆功能
说说我现在吧,楼主现在从事的事IT行业,主攻DotNet技术:当然这次上博客园我也是有备而来,所有再次奉献鄙人拙作,以飨诸位,望诸位不吝赐教. 世界上大多数的工作都是熟练性的工种,编程也不例外,做久了 ...
- linux oracle 设置随系统自动启动数据库实例和监听
在root账户下修改/etc/oratab 文件: # vi /etc/oratab 找到orcl=/db/app/oracle/product/11.1.0/db_1 :N这一行 改为: orcl= ...
- fiddler2使用文档
http://www.trinea.cn/android/android-network-sniffer/
- HTML5画布(线条、渐变)
绘制直线时,一般会用到moveTo与lineTo两种方法. 案例1: <!DOCTYPE html><html><head lang="en"> ...
- [FML]学习笔记一Cross-validation交叉验证
在实际的工程中,有时labeled data的数量不足以留出validation sample(验证样本)否则会导致training sample(训练样本)的数量太少.为了解决这个问题,我们引入一种 ...
- 《转》ACTIONBAR-PULLTOREFRESHLIBS+沉浸式在部分手机上的布局错乱,目前知道的三星系统(TouchWiz)
转载:http://www.cnblogs.com/wubingshenyin/p/4413672.html(原文连接) 前段时间看见ActionBar-PullToRefreshLibs用来刷新很好 ...
- Codeforces 463D Gargari and Permutations
http://codeforces.com/problemset/problem/463/D 题意:给出k个排列,问这k个排列的最长公共子序列的长度. 思路:只考虑其中一个的dp:f[i]=max(f ...
- Keil C动态内存管理机制分析及改进
Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mempool.mallloe和free这3个Ke ...