`
lovecontry
  • 浏览: 1036880 次
文章分类
社区版块
存档分类
最新评论

C#FileStream复制大文件

 
阅读更多

即每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。

/// <summary>

/// 复制文件

/// </summary>

/// <param name="fromFile">要复制的文件</param>

/// <param name="toFile">要保存的位置</param>

/// <param name="lengthEachTime">每次复制的长度</param>

private void CopyFile(string fromFile, string toFile, int lengthEachTime)

{

FileStream fileToCopy = new FileStream(fromFile, FileMode.Open, FileAccess.Read);

FileStream copyToFile = new FileStream(toFile, FileMode.Append, FileAccess.Write);

int lengthToCopy;

if (lengthEachTime < fileToCopy.Length)//如果分段拷贝,即每次拷贝内容小于文件总长度

{

byte[] buffer = new byte[lengthEachTime];

int copied = 0;

while (copied <= ((int)fileToCopy.Length - lengthEachTime))//拷贝主体部分

{

lengthToCopy = fileToCopy.Read(buffer, 0, lengthEachTime);

fileToCopy.Flush();

copyToFile.Write(buffer, 0, lengthEachTime);

copyToFile.Flush();

copyToFile.Position = fileToCopy.Position;

copied += lengthToCopy;

}

int left = (int)fileToCopy.Length - copied;//拷贝剩余部分

lengthToCopy = fileToCopy.Read(buffer, 0, left);

fileToCopy.Flush();

copyToFile.Write(buffer, 0, left);

copyToFile.Flush();

}

else//如果整体拷贝,即每次拷贝内容大于文件总长度

{

byte[] buffer = new byte[fileToCopy.Length];

fileToCopy.Read(buffer,0,(int)fileToCopy.Length);

fileToCopy.Flush();

copyToFile.Write(buffer, 0, (int)fileToCopy.Length);

copyToFile.Flush();

}

fileToCopy.Close();

copyToFile.Close();

}

分享到:
评论

相关推荐

    C# FileStream复制大文件

    本文实例为大家分享了C# FileStream复制大文件的具体代码,供大家参考,具体内容如下 即每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。 /// /// 复制文件...

    C# FileStream复制大文件功能

    主要为大家详细介绍了C# FileStream复制大文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C# FileStream实现大文件复制

    参考文章:C# FileStream复制大文件。将该文章中提供的代码稍作修改,原文中进行了强制类型转换,如果文件很大,比如4G,就会出现溢出的情况,复制的结果字节丢失严重,导致复制文件和源文件大小不一样。这里修改的...

    C#使用FileStream复制一个任意文件

    主要为大家详细介绍了C#使用FileStream复制一个任意文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C# 黑马.Net_大文件拷贝实例源码

    大文件拷贝实例源码,学习关于IO文件流、多线程相关使用做参考。 private void button4_Click(object sender, EventArgs e) { this.progressBar1.Value = 0; this.label1.Text = "0%"; if (!File.Exists(this....

    C#文件夹复制程序及源代码

    用c#开发的用于文件夹循环复制的程序,主要解决安装字库时,解压的文件目录太多,复制不便问题。大家也可以解决将一个目录地下所有的文件(不同名称)提取出来,便于找到不重复的文件。

    C#文件多线程复制代码

    C#多线程复制代码: 1.运用线程和线程池的知识 2.可以实现 限制线程的数量 进行上传 3.用到FileStream类的读写功能 总之 大家可以参考一下!

    C#拷贝文件夹进度条

    网上好多负责文件夹的进度条写的都有问题,在此基础上,自己修改了一下,进度条可以完美显示出来,另外还加了一个label动态显示拷贝的文件名,用的多线程,里面一些细节大家还是要注意一下的。另外拷贝文件夹是是...

    C#根据文件大小显示文件复制进度条

    根据文件大小显示文件复制进度条,操作步骤:C#实例化FileStream类,打开文件对话框,获取源文件的路径,获取目的文件的路径,创建一个线程,在线程上执行指定的委托,对文件进行复制,并在复制完成后关闭线程,设置...

    文件复制【拷贝文件】的C#操作实例

    摘要:C#源码,文件操作,文件复制,拷贝,FileStream C#复制文件或拷贝大文件,复制大文件的一个例子,主要使用的是FileStream复制大文件,源文件和目地文件需要自己填写,实例截图如上示。

    C# 文件处理技术

    C# 文件处理技术,包括file,fileinfo等,具体如下 第三章 文件处理技术 2 3-1 System.IO 命名空间 2 3-1-1 System.IO类介绍 2 3-1-2 File类的常用方法 4 3-1-3 Fileinfo类的常用方法 5 3-1 Fileinfo类的常用方法 5 ...

    文件和注册表操作(C#源码)

    FilePropertiesAndMovement:在FileProperties的基础上多了文件移动、删除、复制功能。 ReadingFiles:从文件读取内容 BinaryFileReader:读取和显示任何文件(展示了FileStream类是用法) ReadWriteText:与上一个...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程...文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制...

    轻松学C#(图解版)

    12.2.3 复制文件 225 12.2.4 删除文件 226 12.2.5 文件的加密和解密 227 12.2.6 文件读取 228 12.3 文件夹类Directory 229 12.3.1 创建文件夹 229 12.3.2 删除文件夹 230 12.3.3 获取文件夹 231 12.4 文件信息类...

    C#获得文件属性信息的实现方法

    FileInfo 类用于提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。 主要功能代码如下: using System; using System.Drawing; using System.Collections; using System.Component...

Global site tag (gtag.js) - Google Analytics