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

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

引用using System.Threading; //线程序的命名空间
首先创建一个线程,字符串str为空。实例化filestream类
先给按钮1一个点击事件。设置参数。判断是否打开文件成功,从而获取源文件路径。
代码图如下:
在这里插入图片描述
效果图如下:
根据文件大小显示复制进度条_第1张图片
按钮1点击事件图:
在这里插入图片描述
在写按钮2的点击事件。设置参数。也是判断是否打开文件成功,从而获取目的文件路径。str记录源文
件的路径从而获取源文件的名称,在创建一个新的线程。thdAddFile.Start执行当前线程。
代码图如下:
在这里插入图片描述
效果图如下:
根据文件大小显示复制进度条_第2张图片
按钮2点击事件图:
在这里插入图片描述
给它定义一个委托public delegate void AddFile();//定义委托

public void SetAddFile()
{
  this.Invoke(new AddFile(RunAddFile));//在线程上执行指定的委托
}
public void RunAddFile()//对文件进行复制,并且在复制完成后关闭线程
{
  CopyFile(textBox1.Text, textBox2.Text + str, 1024, progressBar1);//复制文件
  thdAddFile.Abort();//关闭线程
}

设置好一系列的参数。先设置进度栏的当前位置为0及最小值为0,其先创建目的文件,如果文件已存
在将会被覆盖。然后将其关闭所有资源,释放所有资源的内容。以只读方式打开源文件,以只写方式打
开目的文件,它将根据每一次的传输的大小来计算传输的个数。
设置进度栏的最大值,选择要拷贝的文件大小。
在这里插入图片描述
if判断拷贝的内容小于文件总长度,根据传输的大小来定义一个字节数组,其记录传输的大小,设置
进度栏中进度块的增加个数,在用一个while循环拷贝主体部分,从0开始读,每次最大读SectSize。然后
清空缓存,向目的文件写入字节,使源文件和目的文件流的位置相同。然后就是记录已拷贝的大小,获
取剩余的大小读取剩余字节,写入剩余部分。
代码图如下:
根据文件大小显示复制进度条_第3张图片
否则else判断拷贝的内容大于文件总长度,也是获取到文件的大小,读取源文件的字节。清空缓存,写放
字节,释放所有资源,if判断显示复制完成的提示对话框。设置进度栏的当前位置为0,复制完成后清空
文本,str返回空
代码图如下:
根据文件大小显示复制进度条_第4张图片
效果图如下:
根据文件大小显示复制进度条_第5张图片
选择打开源文件选择要打开的文件路径,选择目的文件要复制到哪的文件路径,开始复制到目的文件,
根据文件大小显示复制进度条,通过条件查询弹出复制完成对话框,点击确定清空文本,复制到目的文
件成功。

你可能感兴趣的:(js)