c#根据文件大小显示文件复制进度条的实现代码
本文导语: 本节内容: c#根据文件大小显示文件复制进度条的实例。 1,窗体设计,如下图: 2,c# 进度条的实现代码 代码示例: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syst...
本节内容:
c#根据文件大小显示文件复制进度条的实例。
1,窗体设计,如下图:
2,c# 进度条的实现代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace CopyProgress015
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread thdCopyFile; //创建一个线程
private string str = ""; //用来记录源文件的名字
FileStream FormerOpenStream; //实例化源文件FileStream类
FileStream ToFileOpenStream; //实例化目标文件FileStream类
#region //复制文件 函数
///
/// 复制文件
///
/// 源文件路径
/// 目的文件路径
/// 传输大小
/// ProgressBar控件
public void CopyFile(string FormerFile, string ToFile, int TranSize, ProgressBar progressBar1)
{
progressBar1.Value = 0;//设置进度条的当前位置为0
progressBar1.Minimum = 0; //设置进度条的最小值为0
try
{
FormerOpenStream = new FileStream(FormerFile, FileMode.Open, FileAccess.Read);//以只读方式打开源文件
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
return;
}
try
{
FileStream fileToCreate = new FileStream(ToFile, FileMode.Create); //创建目的文件,如果已存在将被覆盖
fileToCreate.Close();//关闭所有fileToCreate的资源
fileToCreate.Dispose();//释放所有fileToCreate的资源
}
catch(IOException ex)
{
MessageBox.Show(ex.Message);
return;
}
ToFileOpenStream = new FileStream(ToFile, FileMode.Append, FileAccess.Write);//以写方式打开目的文件
int max = Convert.ToInt32(Math.Ceiling((Double)FormerOpenStream.Length / (Double)TranSize));//根据一次传输的大小,计算最大传输个数. Math.Ceiling 方法 (Double),返回大于或等于指定的双精度浮点数的最小整数值。
progressBar1.Maximum = max;//设置进度条的最大值
int FileSize; //每次要拷贝的文件的大小
if (TranSize < FormerOpenStream.Length) //如果分段拷贝,即每次拷贝内容小于文件总长度
{
byte[] buffer = new byte[TranSize]; //根据传输的大小,定义一个字节数组,用来存储传输的字节
int copied = 0;//记录传输的大小
int tem_n = 1;//设置进度栏中进度的增加个数
while (copied