多线程实现文件复制
2008-04-28 08:17
232 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace CopyFileDemo
{
public partial class CopyProgressForm : Form
{
string destFile, srcFile;
public CopyProgressForm(string destFile, string srcFile)
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
this.destFile = destFile; // 要复制的源文件名称
this.srcFile = srcFile; // 要复制到的目标文件名称
}
private void CopyProgressForm_Load(object sender, EventArgs e)
{
this.Show();
// 在此处创建多线程复制文件
Thread thread = new Thread(new ThreadStart(this.CopyProcess));
thread.IsBackground = true;
thread.Start();
}
void CopyProcess()
{
FileStream src = null,dest = null;
try
{
src = new FileStream(this.srcFile, FileMode.Open, FileAccess.Read, FileShare.Read);
dest = new FileStream(this.destFile, FileMode.Create, FileAccess.Write, FileShare.None);
long size = src.Length;
long currBytes = 0;
byte[] buffer = new byte[1024];
int length = 0;
do
{
length = src.Read(buffer, 0, buffer.Length);
currBytes += length;
this.pgrProgress.Value = (int)(currBytes * 100 / size);
dest.Write(buffer, 0, length);
}
while (length != 0);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (src != null)
src.Close();
if (dest != null)
dest.Close();
this.Close();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace CopyFileDemo
{
public partial class CopyProgressForm : Form
{
string destFile, srcFile;
public CopyProgressForm(string destFile, string srcFile)
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
this.destFile = destFile; // 要复制的源文件名称
this.srcFile = srcFile; // 要复制到的目标文件名称
}
private void CopyProgressForm_Load(object sender, EventArgs e)
{
this.Show();
// 在此处创建多线程复制文件
Thread thread = new Thread(new ThreadStart(this.CopyProcess));
thread.IsBackground = true;
thread.Start();
}
void CopyProcess()
{
FileStream src = null,dest = null;
try
{
src = new FileStream(this.srcFile, FileMode.Open, FileAccess.Read, FileShare.Read);
dest = new FileStream(this.destFile, FileMode.Create, FileAccess.Write, FileShare.None);
long size = src.Length;
long currBytes = 0;
byte[] buffer = new byte[1024];
int length = 0;
do
{
length = src.Read(buffer, 0, buffer.Length);
currBytes += length;
this.pgrProgress.Value = (int)(currBytes * 100 / size);
dest.Write(buffer, 0, length);
}
while (length != 0);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (src != null)
src.Close();
if (dest != null)
dest.Close();
this.Close();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
相关文章推荐
- Linux下C语言实现多线程文件复制
- 使用多线程实现文件的复制功能,并在控制台显示复制的进度,进度以百分比表示。
- linux下c语言实现多线程文件复制
- 20180126:通过Callable实现多线程、生产者-消费者问题、多线程下载(复制)文件
- RandomAccessFile实现多线程文件复制
- linux下c语言实现多线程文件复制
- Java简单实现多线程复制文件
- 使用RandomAccessFile和多线程来实现开启三个线程去复制一个文件
- linux下c语言实现多线程文件复制
- 多线程实现文件复制
- 使用多线程实现文件复制
- linux下c语言实现多线程文件复制
- linux下c语言实现多线程文件复制
- linux下c语言实现多线程文件复制
- java多线程实现复制大文件
- 批处理bat实现创建、复制、删除文件及文件夹
- 通过IO文件流操作实现对文件的复制
- linux下用c库和系统调用实现文件的复制
- java中实现文件复制、剪切和删除
- Java实现文件复制