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();
}