与Java中的各种文件流,网络流类似,.net中也有各类流。流的主要用途就是与应用程序外部的文件或数据源进行数据交互。基类为Stream,定义在命名空间System.IO下;

一,使用流进行一次性的复制写入

首先我们在桌面上建个测试用的文件,写入些东西:

之后是我们的代码:

#region 使用流进行一次性复制//创建一个文件流对象(参数一:指定了文件的位置;参数二:枚举值,指定操作系统打开文件的方式;参数三:表明了打开文件的意图;注意第二个参数与第三个参数要注意搭配使用)Stream source = new FileStream(@"C:/Users/v-liuhch/Desktop/StreamTest.txt", FileMode.Open, FileAccess.Read);byte[] buffer = new byte[source.Length];//将文件数据写入到字节数组中(参数一:要写入的字节数组; 参数二:用于设定文件从哪个位置开始读取;参数三:读取的字节数)int byteRead = source.Read(buffer, 0, (int)source.Length);//返回值为读取到的字节数//foreach (var b in buffer)//{//   // Console.WriteLine(Convert.ToString(b, 2));//二进制//    //Console.WriteLine(Convert.ToString(b, 10));//十进制//    Console.WriteLine(Convert.ToString(b, 16).ToUpper());//十六进制//}//Console.ReadKey();//将文件写入StreamTarget.txtusing (Stream target = new FileStream(@"C:/Users/v-liuhch/Desktop/StreamTarget.txt", FileMode.Create, FileAccess.Write)){target.Write(buffer, 0, buffer.Length);}source.Dispose();#endregion

注意如果不使用using,别忘了dispose.

二,循环分批的复制

为了测试下面这段代码,建议找个大点儿的文件啥滴。

#region 循环分批复制/*问题出现背景:传递一个更大的文件;*   事先无法得知文件的大小,例如读取网络文件;*   上述情况不能创建一个尺寸正好合适的byte[]数组,此时只能分批读取和写入,每次只读取部分字节,直到文件尾部; */int BufferSize = 10240;//10KBusing ( Stream source = new FileStream(@"C:/Users/v-liuhch/Desktop/sherlock.wmv", FileMode.Open, FileAccess.Read)){using (Stream target = new FileStream(@"C:/Users/v-liuhch/Desktop/sherlockCopy.wmv", FileMode.Create, FileAccess.Write)){byte[] buffer = new byte[BufferSize];int bytesRead;do{bytesRead = source.Read(buffer, 0, BufferSize);target.Write(buffer, 0, bytesRead);} while (bytesRead > 0);}}#endregion

PS:建议使用using;

对大文件采取分割读取的方式还是比较科学滴,类似大文件上传的原理。

.net 流——使用流进行文件复制相关推荐

  1. java没有提供将字符流_JAVA字符流为什么没有把文件复制?

    源自:5-2 字符流之文件读写流 JAVA字符流为什么没有把文件复制? package IsPackage; import java.io.FileInputStream; import java.i ...

  2. 缓冲流效率测试_文件复制

    (1)使用字节输入流对象FileInputStream.输出流对象FileOutputStream测试 package com.IOAndProperties.CopyFile;import java ...

  3. 使用字符流 创建文件 写入文件 复制文件

    import java.io.*; /**    * 使用字符流创建文件复制文件  * 在盘符中文件夹  * 在文件夹中添加文件  * 在文件中写文字  *   复制文件  * */ public c ...

  4. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  5. JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流...

    /*** File类:文件的创建.删除.重命名.得到路径.创建时间等,是唯一与文件本身有关的操作类*/ public class Main {public static void main(Strin ...

  6. java管道流文件的复制_JavaIO 总结笔记三 基本字节字符输入输出流和文件复制...

    一.IO体系 1.流主要分两大类:字节流 字符流 2.在硬盘上的文件,都是以二进制字节形式存储的,所以不管啥文件,读写时都应该用字节流 3.在java的早期版本中,的确只有字节流,没有字符流 4.一个 ...

  7. I/O流之缓冲流的文件复制代码及节点流处理数据加密

    缓冲流的文件复制代码 @Testpublic void bufferedStream() { long start = System.currentTimeMillis(); BufferedInpu ...

  8. 字节流与字符流对文件复制的效率

    字节流与字符流在用于文件复制时效率差距较大 分别对文件夹下的txt文件,jpg文件与mp4文件进行复制粘贴操作,并使用日期类进行运行时间记录,比较几种方法的效率. public class copy ...

  9. 缓冲流的效率测试_复制文件

    package com.learn.demo02.CopyFile;import java.io.FileInputStream; import java.io.FileOutputStream; i ...

最新文章

  1. 在AMD GPU上搞深度学习——一次将错就错的冒险
  2. c语言自定义函数程序设计,ch3自定义函数设计 C语言 《解析C程序设计》.ppt
  3. JQuery中each()的使用方法说明
  4. CentOS6.5+puppet3.7.3 安装、配置及测试
  5. linux scull 的内存使用
  6. python开发客户端_python用700行代码实现http客户端
  7. Linux 命令之 let -- bash 中用于计算的工具,用于执行一个或多个表达式
  8. sql字符串拼接_Mybatis的SqlSession执行sql过程
  9. Linux笔记-利用chkconfig创建脚本使得Rabbimq开机自启
  10. webapi输出炜json_webapi转化为json格式
  11. SpringBoot POM web开发(spring-boot-starter-web)
  12. 2017 成为更好的自己需要做的事情
  13. AppCan 携手腾讯微博开放平台共推跨平台开发工具
  14. android平板改成电视盒子,自己动手把闲置的手机或者平板自制成电视的盒子
  15. 用户个人中心页面html5源码,橙色的商城个人中心全部页面模板html源码
  16. 2017年Android恶意软件专题报告
  17. 蒙圣光:2018年IT行业的八大趋势
  18. 应用启动图标未读消息数显示 工具类
  19. c#取消word修订痕迹_C# 插入、修改、删除Word批注
  20. 爬虫实战10—日志、守护线程以及验证码处理

热门文章

  1. PowerBI visuals共计246组2020年1月31日扒取(Power BI 视觉对象)
  2. C语言操作符详解------移位操作符
  3. 如何让金蝶kis记账王进行凭证过账
  4. 友盟多渠道打包+混淆+腾讯云直播的推/拉流
  5. Intel® 64 and IA-32 Architectures Software Developer's Manual CHPTER 8 Multiple-processor management
  6. 【高等数学基础进阶】定积分与反常积分-反常积分
  7. 无懈可击的web设计
  8. python 实现3D大熊猫
  9. C语言计算一个整数各位上的数字之积
  10. 使用xgboost进行特征选择