C# FileStream复制大文件功能
FileStream缓冲读取和写入可以提高性能。每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。
FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件。如果文件非常大,势必消耗性能。特封装在FileHelper中以备不时之需。强制类型转换,如果文件很大,比如4G,就会出现溢出的情况,复制的结果字节丢失严重,导致复制文件和源文件大小不一样。这里修改的代码如下:
publicstaticclassFileHelper
{
///
///复制大文件
///
///源文件的路径
///文件保存的路径
///每次读取的长度
///是否复制成功
publicstaticboolCopyFile(stringfromPath,stringtoPath,inteachReadLength)
{
//将源文件读取成文件流
FileStreamfromFile=newFileStream(fromPath,FileMode.Open,FileAccess.Read);
//已追加的方式写入文件流
FileStreamtoFile=newFileStream(toPath,FileMode.Append,FileAccess.Write);
//实际读取的文件长度
inttoCopyLength=0;
//如果每次读取的长度小于源文件的长度分段读取
if(eachReadLength
测试代码:
classProgram
{
staticvoidMain(string[]args)
{
Stopwatchwatch=newStopwatch();
watch.Start();
if(FileHelper.CopyFile(@"D:\安装文件\新建文件夹\SQLSVRENT_2008R2_CHS.iso",@"F:\SQLSVRENT_2008R2_CHS.iso",1024*1024*5))
{
watch.Stop();
Console.WriteLine("拷贝完成,耗时:"+watch.Elapsed.Seconds+"秒");
}
Console.Read();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。