大文件Copy 大数据量复制
private void button3_Click(object sender, EventArgs e)
{
Thread thread = null;
//为了不让界面死掉,要将该操作放在一个线程中
thread = new Thread
(
() =>
{
//告诉系统不去检测非法的跨线程调用
CheckForIllegalCrossThreadCalls = false;
//创建一个文件流指向源文件
FileStream fsRead = new FileStream(this.textBox1.Text, FileMode.Open);
//创建一个文件流指向目标文件
FileStream fsWrite = new FileStream(this.textBox2.Text, FileMode.Create);
//记录一下该文件的长度
long fileLength = fsRead.Length;
//定义一个1M的缓冲区
byte[] buffer = new byte[1024 * 1024];
//先读取一次,并且将读取到的真正内容长度记录下来
int readLength = fsRead.Read(buffer, 0, buffer.Length);
//用来记录已经将多少内容写入到了文件中
long readCount = 0;
//只要读取到的内容不为0就接着读
while (readLength!=0)
{
//将前面已经读取到内存中的数据写入到文件中
fsWrite.Write(buffer ,0,readLength);
//已经读取的数量累加
readCount += readLength;
//计算已经读取的数据百分比
int percentage =(int)( readCount * 100 / fileLength);
this.progressBar1.Value = percentage;
//进行下一次读取
readLength = fsRead.Read(buffer, 0, buffer.Length);
}
fsRead.Close();
fsWrite.Close();
//清空缓冲区
buffer = null;
//回收一下内存
GC.Collect();
thread.Abort();
}
);
thread.Start();
}
最新文章
- 讲座:Influence maximization on big social graph
- Jquery源码学习(第一天)
- DevExpress TreeList使用心得
- select元素中设置padding效果
- 关于NPOI
- Exchange 2013 、Lync 2013、SharePoint 2013 三
- JS 关闭 页面 浏览器 事件
- markdown 设置字体颜色
- 如何增强 Linux 系统的安全性,第一部分: Linux 安全模块(LSM)简介
- ubuntu 12.04安装telnet和ssh服务
- lua if
- Index &; Statistics ->;>; Rebuild Index会不会覆盖原先Index的WITH选项设置
- 机器学习实战——k-近邻算法
- git cherry-pick 从其他分支检出指定的commit到当前分支
- 各种CSS样式设置细线边框
- iP私网地址
- Selenium WebDriver Api 知识梳理
- 【CentOS】centos7 稳定使用版本,centos镜像的下载
- JavaScript正则表达式匹配中英文以及常用标点符号白名单写法
- go build 不同系统下的可执行文件