C#大文件的拷贝

大文件拷贝原理:向内存申请1M空间,反复从源文件读取1M内容写入到目标文件,直到读完。

 1   private void CopyBigFile()
 2         {
 3             string originalPath = @"E:\AdvanceCSharpProject\LearnCSharp\21.zip";
 4             string destPath = @"F:\BaiduNetdiskDownload\21.zip";
 5             //定义读文件流
 6             using (FileStream fsr = new FileStream(originalPath, FileMode.Open))
 7             {
 8                 //定义写文件流
 9                 using (FileStream fsw = new FileStream(destPath, FileMode.OpenOrCreate))
10                 {
11                     //申请1M内存空间
12                     byte[] buffer = new byte[1024 * 1024];
13                     //无限循环中反复读写,直到读完写完
14                     while(true)
15                     {
16                         int readCount = fsr.Read(buffer, 0, buffer.Length);
17                         fsw.Write(buffer, 0, readCount);
18                         if(readCount < buffer.Length)
19                         {
20                             break;
21                         }
22                     }
23                 }
24             }
25         }

原文地址:https://www.cnblogs.com/blackteeth/p/10205044.html

时间: 2024-10-13 21:22:46

C#大文件的拷贝的相关文章

利用生产者消费者模型实现大文件的拷贝

代码如下,一般10个生产者10个消费者拷贝1个g的文件大概在6s左右,速度还是不错的. 1 #include <semaphore.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <fcntl.h> 5 #include <pthread.h> 6 #include <sys/stat.h> 7 #include <unistd.h> 8 #include

C# IO操作(四)大文件拷贝(文件流的使用)、文件编码

     大文件拷贝(文件流的使用).文件编码 首先说一下大文件拷贝和文件流,因为计算机的内存资源是有限的,面对几个G甚至更大的文件,需要通过程序来完成拷贝,就需要用到文件流(因为我们无法做到把文件一次性加载到内存中:事实上,内存也不允许这么干),所以在C#中出现了内存流这个东西.先看下面的内容,File类中的常用读取文件方法会将文件内容一次性全部加载到内存中: 1 string sPath = @"C:\Users\Chens-PC\Desktop\Nginx.txt"; 2 //F

C# 学习黑马.Net视频教程,大文件拷贝

设计器代码: namespace 大文件拷贝 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disposing&

高效的大文件拷贝

当你要两台机器之间拷贝一些大文件的时候,把nc(netcat)和pigz(parallel gzip)组合起来会是一个简单和高效的选择.不过,如果要把这些文件同时分发到多台机器,有什么好法子吗?在Tumblr,这还算蛮常见的需求,比如我们要快速的同时增加几台MySQL Slave的时候. 你可以从源机器逐个拷贝到逐台目标机器,但是往往时间也是成倍的.或者你也可以同时从源机器同时拷贝到多个目标机器,但是受制于源机器的带宽等因素,速度并不见得真的很快. 还好,借助一些UNIX工具可以做的更好.把te

C#分块拷贝大文件

//定义源文件和目标文件,绝对路径 public static string source = @"E:\C#\C#编程语言详解.pdf"; //2014-6-10 Training //拷贝大文件,分块拷贝 AddBigFile(source); /// <summary> /// 拷贝大文件 /// </summary> /// <param name="source">原绝对路径</param> private

C#谈文件操作NO2(大文件拷贝)

上一篇介绍了文件的一些基本操作,介绍了文件的加密操作.这一篇介绍一些文件流的操作 文件流类FileStream实现大文件拷贝 大文件拷贝之所以用文件流来进行拷贝,主要是由于如果用File静态类来执行拷贝就是将整个文件整体传输,对于一个好几个G的大文件会造成内存占用大,运行慢,效率不高.所以用到文件流拷贝.文件流拷贝可以设置拷贝的二进制流缓冲区的大小,然后根据缓冲区的大小来一点一点拷贝,就类似与U盘拷贝文件到电脑似的. 下面就介绍一下如何实现拷贝 source是源文件路径,target是目标文件路

怎么处理U盘无法拷贝超过4G大文件的情况?

制作好雨后清风U盘启动盘后,有朋友在将雨后清风系统镜像文件拷贝传输至U盘时,会发现U盘提示文件过大,无法进行传输,但是U盘的剩余存储空间明显还足够,这是怎么回事呢?其实这是U盘文件系统格式的原因,如果你的U盘文件系统格式不是NTFS的话,即使剩余空间足够,也无法传输4G以上大小的单个文件.下面雨后清风就来告诉你相应的解决方法. U盘无法存储传输4G以上大文件的解决方法 1.插入U盘,打开我的电脑,右键点击U盘,单击选择"属性".在U盘属性的面板中切换到"硬件"选项卡

虚拟机拷贝大文件存在的问题

目录 虚拟机拷贝大文件存在的问题 问题一:虚拟机扩容 问题二: 反复拷贝大文件导致Ubuntu空间不足 2.1 派生问题:隐藏文件显示与删除 2.2 派生问题:给根目录的文件权限 参考 虚拟机拷贝大文件存在的问题 问题一:虚拟机扩容 1.VMware 编辑虚拟机设置 2.下载Gparted分区工具 sudo apt-get install gparted # 下载后打开 sudo gparted 3.删除与unallocated隔着的所有文件,其中有些文件加锁,将linux-swap分区先swa

大文件拷贝,试试NIO的内存映射

最近项目里有个需求需要实现文件拷贝,在java中文件拷贝流的读写,很容易就想到IO中的InputStream和OutputStream之类的,但是上网查了一下文件拷贝也是有很多种方法的,除了IO,还有NIO.Apache提供的工具类.JDK自带的文件拷贝方法 IO拷贝 public class IOFileCopy { private static final int BUFFER_SIZE = 1024; public static void copyFile(String source, S