private void ReadThread() //开始复制文件
{
Monitor.Enter(this);
FileStream fs=new FileStream(@"g:\java.dfi",FileMode.Open);
byte []bytes=new byte[fs.Length];
size=fs.Length/100;
countSize=(int)fs.Length;
long countSize=fs.Length;
fs.Read(bytes,0,bytes.Length);
fs.Close();
fs=new FileStream(@"g:\1.dfir",FileMode.Create,FileAccess.Write);
listView1.Items.Add("0");
fs.Write(bytes,0,bytes.Length);
long cnt=size;
if(countSize>10000000)
{
while(fs.Position!=countSize)
{
Thread.Sleep(1000);
}
}
Monitor.Exit(this);
fs.Close();}private void ReadThread2() //计算文件已复制的百分比
{
FileInfo fi=new FileInfo(@"g:\java.dfi");
if(fi.Length==countSize) //如果文件很小已读取完就采用下面的
{
for(int i=1;i<101;i++) //如果小于100%就循环
{
listView1.Items[0].Text=i.ToString(); //显示已复制完的百分率
}
}
else //如果文件很大就采用下面的
{
for(int i=1;(fi.Length/size)<100;i++)
{
listView1.Items[0].Text=i.ToString();
Thread.Sleep(1000);
}
}
}private void button1_Click(object sender, System.EventArgs e)
//启动复制文件和计算百分比的线程
{
t=new Thread(new ThreadStart(ReadThread));
t.Start();
t2=new Thread(new ThreadStart(ReadThread2));
t2.Start();
}
{
FileInfo fi=new FileInfo(@"g:\1.dfi"); //原来(@"g:\java.dfi");
.....................