上一篇介绍了文件的一些基本操作,介绍了文件的加密操作。这一篇介绍一些文件流的操作

文件流类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(大文件拷贝)相关推荐

  1. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝

    Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...

  2. Java编程那些事儿——文件操作之写文件

    Java编程那些事儿--文件操作之写文件 Java, Java培训, Java基础, Java学习, Java教程 11.3.1.4 写文件 如前所述,将程序内部的数据输出到程序外部的数据源,应该使用 ...

  3. [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. php操作外部文件,php文件操作-将其他文件的数据添加到本文件中

    本篇文章的内容是php文件操作-将其他文件的数据添加到本文件中,现在分享给大家,有需要的朋友可以参考一下 GitHub源码 其实我们的程序基于下面的问题写的答案: 有两个文本文件 A.txt B.tx ...

  5. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

  6. Linux_Shell脚本 + 配置文件:按照不同文件类型合并文件,小文件合并成大文件

    需求概述 某项业务中,我方通过文件接口与上游系统进行数据交互,上游系统通过ftp的方式推送接口数据文件到指定目录,我方通过sqlldr的方式入库并处理接口数据. 为保证接口数据的一致性,我方每天会将前 ...

  7. RHEL目录和文件操作:Linux文件系统管理

    实验名称:RHEL目录和文件操作:Linux文件系统管理 某企业的 Linux 服务器中新增了一块硬盘/dev/sdb,请使用 fdisk 命令新建/dev/sdb1 主分区和/dev/sdb2 扩展 ...

  8. Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作

    Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作: objective-c通过使用NSFileManager类来管理和操作文件.目录,NSFileManag ...

  9. php文件写入生成文件,PHP 文件操作类(创建文件并写入) 生成日志

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 PHP 文件操作类(创建文件并写入) 生成日志 /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 ...

  10. php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php

    path = $path; } //判断操作方式 a追加写 if (! empty ( $mode )) { $this->mode = $mode; } //判断写入的内容 if (! emp ...

最新文章

  1. 让Chrome成为你的pdf阅读器
  2. 2021研究生报告:博士每年招生超10万人,女生读研占比达55.1%
  3. 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
  4. 2019年, VQA论文汇总
  5. IT巨头组队年末将推“Gen-Z”内存新架构,英特尔和思科缺席是闹哪样?
  6. 计算机网络路由选择协议,IP路由选择协议原理和作用
  7. Node.js-json-模块化-全局对象-fs-服务-Buffer
  8. c++ 构造函数数组_“动态数组”的设计与实现
  9. RSPapers | 工业界推荐系统论文合集
  10. 1.4. network
  11. java8 垃圾回收算法_Java垃圾回收机制算法详解
  12. 草根程序员转型做项目管理走过的点点滴滴_康奈尔笔记法介绍
  13. 【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-5数据库操作
  14. 【PHP兴趣部落-08】PHP中时区设置的三种方法(timezone)
  15. 谈谈管理者绩效管理要点
  16. 【汇正财经】扬帆起航,医美市场行业规模扩张
  17. matlab 矩阵维度必须一致,错误使用 /
  18. day05_步入百万年薪的第五天
  19. 从微博个性图标里学Android动态更换
  20. 为什么经常把VARCHAR长度设置成255,而不是更大

热门文章

  1. 女生,你也可以IT!
  2. html 案例 --- 网页简历 、简历信息填写
  3. 纯前端 导出excel 插件xlsx和file-saver
  4. Android Studio Chipmunk 发布啦,快来看看有什么更新
  5. 【从0到1搭建LoRa物联网】17、LoRa连接到chirpstack
  6. 如何系统自学Java成功就业?
  7. AJAX框架眼镜盒可爱,亲爱的顾客,这是一套框架眼镜日常护理的方法,请您收好!​...
  8. [Jzoj] 3055.比赛
  9. cad计算机辅助,CAD 计算机辅助.doc
  10. jap mysql注册登录_SpringBoot+JPA实现连接数据库及简单的登录页面(超详细,附全部源码)...