C#谈文件操作NO2(大文件拷贝)
上一篇介绍了文件的一些基本操作,介绍了文件的加密操作。这一篇介绍一些文件流的操作
文件流类FileStream实现大文件拷贝
大文件拷贝之所以用文件流来进行拷贝,主要是由于如果用File静态类来执行拷贝就是将整个文件整体传输,对于一个好几个G的大文件会造成内存占用大,运行慢,效率不高。所以用到文件流拷贝。文件流拷贝可以设置拷贝的二进制流缓冲区的大小,然后根据缓冲区的大小来一点一点拷贝,就类似与U盘拷贝文件到电脑似的。
下面就介绍一下如何实现拷贝
source是源文件路径,target是目标文件路径
中间缓冲区的大小看自己所要传输的文件的大小,这里创建了一个10M的缓冲区。
<span style="font-family:Microsoft YaHei;font-size:18px;">//1、创建一个读取源文件的文件流using (FileStream fsRead=new FileStream (source ,FileMode .Open ,FileAccess .Read )){//2、创建一个写入目标文件的文件流using (FileStream fsWrite=new FileStream (target ,FileMode.Create ,FileAccess .Write)){//拷贝文件的时候,创建一个中间缓冲区byte[] bytes = new byte[1024 * 1024 * 10];//返回值表示本次实际读到的字节个数int r = fsRead.Read(bytes, 0, bytes.Length);while (r>0){//将读取到的内容写入到新文件//第三个参数应该是实际读取到的字节数,而不是数组的长度fsWrite.Write(bytes, 0, r);Console.Write(".");r = fsRead.Read(bytes, 0, bytes.Length);}}}</span>
Ps:
当用文件流FileStream来读取文本文档的时候,由于汉字是用2个字节编码,而字母是1个字节。对于一个固定的二进制字节流缓冲区,不能很好的区分汉字和字母,这样有可能缓冲区完毕之后最后一个汉字读到1个字节,这就是“半个汉字“这就出现了信息不完整的现象。所以这时读取文本文档就要用StreamWriter,StreamReader。
C#谈文件操作NO2(大文件拷贝)相关推荐
- Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝
Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...
- Java编程那些事儿——文件操作之写文件
Java编程那些事儿--文件操作之写文件 Java, Java培训, Java基础, Java学习, Java教程 11.3.1.4 写文件 如前所述,将程序内部的数据输出到程序外部的数据源,应该使用 ...
- [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- php操作外部文件,php文件操作-将其他文件的数据添加到本文件中
本篇文章的内容是php文件操作-将其他文件的数据添加到本文件中,现在分享给大家,有需要的朋友可以参考一下 GitHub源码 其实我们的程序基于下面的问题写的答案: 有两个文本文件 A.txt B.tx ...
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...
- Linux_Shell脚本 + 配置文件:按照不同文件类型合并文件,小文件合并成大文件
需求概述 某项业务中,我方通过文件接口与上游系统进行数据交互,上游系统通过ftp的方式推送接口数据文件到指定目录,我方通过sqlldr的方式入库并处理接口数据. 为保证接口数据的一致性,我方每天会将前 ...
- RHEL目录和文件操作:Linux文件系统管理
实验名称:RHEL目录和文件操作:Linux文件系统管理 某企业的 Linux 服务器中新增了一块硬盘/dev/sdb,请使用 fdisk 命令新建/dev/sdb1 主分区和/dev/sdb2 扩展 ...
- Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作
Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作: objective-c通过使用NSFileManager类来管理和操作文件.目录,NSFileManag ...
- php文件写入生成文件,PHP 文件操作类(创建文件并写入) 生成日志
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 PHP 文件操作类(创建文件并写入) 生成日志 /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 ...
- php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php
path = $path; } //判断操作方式 a追加写 if (! empty ( $mode )) { $this->mode = $mode; } //判断写入的内容 if (! emp ...
最新文章
- 让Chrome成为你的pdf阅读器
- 2021研究生报告:博士每年招生超10万人,女生读研占比达55.1%
- 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
- 2019年, VQA论文汇总
- IT巨头组队年末将推“Gen-Z”内存新架构,英特尔和思科缺席是闹哪样?
- 计算机网络路由选择协议,IP路由选择协议原理和作用
- Node.js-json-模块化-全局对象-fs-服务-Buffer
- c++ 构造函数数组_“动态数组”的设计与实现
- RSPapers | 工业界推荐系统论文合集
- 1.4. network
- java8 垃圾回收算法_Java垃圾回收机制算法详解
- 草根程序员转型做项目管理走过的点点滴滴_康奈尔笔记法介绍
- 【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-5数据库操作
- 【PHP兴趣部落-08】PHP中时区设置的三种方法(timezone)
- 谈谈管理者绩效管理要点
- 【汇正财经】扬帆起航,医美市场行业规模扩张
- matlab 矩阵维度必须一致,错误使用 /
- day05_步入百万年薪的第五天
- 从微博个性图标里学Android动态更换
- 为什么经常把VARCHAR长度设置成255,而不是更大
热门文章
- 女生,你也可以IT!
- html 案例 --- 网页简历 、简历信息填写
- 纯前端 导出excel 插件xlsx和file-saver
- Android Studio Chipmunk 发布啦,快来看看有什么更新
- 【从0到1搭建LoRa物联网】17、LoRa连接到chirpstack
- 如何系统自学Java成功就业?
- AJAX框架眼镜盒可爱,亲爱的顾客,这是一套框架眼镜日常护理的方法,请您收好!​...
- [Jzoj] 3055.比赛
- cad计算机辅助,CAD 计算机辅助.doc
- jap mysql注册登录_SpringBoot+JPA实现连接数据库及简单的登录页面(超详细,附全部源码)...