C#基础学习之FileStream
FileStream和File的区别 后者比前者给内存带来压力大。
FileStream可以操作字节也就是可以保存任何类型的文件。
1.FileStream读文件操作
//OpenOrCreate:有就打开,没有就创建
//FileStream 3个参数的含义: 1.path 2,针对文件什么操作,3针对文件内容怎么操作
FileStream fsRead = new FileStream(@"D:\extension_6_12.crx", FileMode.OpenOrCreate, FileAccess.Read);
byte[]buffer=new byte[1024*1024*5];//1024*1024*5 只读取5M,不要写太大比如8G 那就内存溢出了。
//if file byte.length=3.8M
//返回本次实际读取的有效字节数。 int r=fsRead.Read(buffer, 0, buffer.Length);//从0读,到最大内容长度5M.
//将字节数组解码成字符串 string s = Encoding.Default.GetString(buffer,0,r); //只解码内容的部分
//关闭,GC垃圾回收处理器不会自己自动回收
fsRead.Close();
//释放资源
fsRead.Dispose();
Console.WriteLine(s);
Console.ReadKey();
2.FileStream写文件操作
// 使用FileStream写入数据
using (FileStream fs=new FileStream(@"D:\\new.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
string str="666666666666666666666";
byte[] buff = Encoding.UTF8.GetBytes(str);
fs.Write(buff,0,buff.Length);//如果文件存在那么将,一个一个字符覆盖文件
}
Console.WriteLine("写入文件");
Console.ReadKey();
3.多媒体文件的复制
将多媒体文件读出来,让后写入到另一个文件
string source = @"c:\\zumba.mp3";
string targetSource = @"D:\\zumba.mp3";
using (FileStream fsRead=new FileStream(source,FileMode.OpenOrCreate,FileAccess.Read))
{
using (FileStream fsWrite=new FileStream(targetSource,FileMode.OpenOrCreate,FileAccess.Write))
{
byte[] buffer = new byte[1024 * 1024 * 6]; //最多读取6M
//文件比较大所以循环读取
//返回本次读取实际取代的字节数。
while (true)
{
int r = fsRead.Read(buffer, 0, buffer.Length);
//如果返回长度0意味着读取完毕
if(r==0)
{
break;
}
fsWrite.Write(buffer, 0, r);
}
}
}
C#基础学习之FileStream的更多相关文章
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
- python入门到精通[二]:基础学习(1)
摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- Yaf零基础学习总结4-Yaf的配置文件
在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...
随机推荐
- Zju1610 Count the Colors
题面: 画一些颜色段在一行上,一些较早的颜色就会被后来的颜色覆盖了. 你的任务就是要数出你随后能看到的不同颜色的段的数目. Input: 每组测试数据第一行只有一个整数n, 1 <= n < ...
- 迭代解析JSON简单实例
由于项目中遇到了这个问题,所以在这里记录一下. 比如:请求到的JSON串: { "msg":"数据获取成功", "success":true ...
- 【CF710F】String Set Queries(二进制分组,AC自动机)
[CF710F]String Set Queries(二进制分组,AC自动机) 题面 洛谷 CF 翻译: 你有一个字符集合\(D\),初始为空, 有三种操作: 往\(D\)中加入一个串:从\(D\)中 ...
- 51nod 1421 最大MOD值 | 暴力
题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...
- linux内核分析 第五周读书笔记
第18章 调试 内核调试的难度大于用户级 一.准备开始 开始之前需要的是: 一个行为可靠且定义明确的bug 一个隐匿bug的内核版本 相关内核代码的知识和运气 想要成功的调试,取决于能不能将这些bug ...
- Linux及安全实践三——程序破解
Linux及安全实践三--程序破解 一.基本知识 常用指令机器码 指令 作用 机器码 nop 无作用(no operation) 90 call 调用子程序,子程序以ret结尾 e8 ret 返回程序 ...
- ButterKnife注入注解框架用法
Android 依赖注入 ButterKnife 基本使用 - 渐行渐远渐无声 - 博客园http://www.cnblogs.com/fansen/p/5653887.html ButterKnif ...
- bzoj2758【scoi2012】Blinker的的噩梦
题目描述 一天Blinker醒来,发现自己成为了一个二维世界的点,而且被标记上了一个奇怪的值. 这个世界是由N个边界互不相交(且不相切)的图形组成,这里图形仅包括圆和凸多边形.每个图形还有一个权值.每 ...
- RF - 完整用例展示
将重复性动作进行封装为keyword,在测试用例中调用keyword. *** Settings *** Documentation Simple example using SeleniumLibr ...
- centos禁用ipv6
两步完成 vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6=1sysctl -p /etc/sysctl.conf