用FileStream来复制文件
一个用FileStream来复制文件的小程序

相比用File.Copy()方法,我觉得有两个好处
1:可以实时显示文件进度
2:当文件拷贝到一半发生异常时不会造成目标文件不可用,(用FileStream,文件可播放已拷贝部分的片段)
贴上代码:
1
private void button1_Click(object sender, EventArgs e)
2
{
3
FileStream fsr = null;
4
FileStream fsw = null;
5
try
6
{
7
this.progressBar1.Maximum =100;
8
fsr = new FileStream(this.textBox1.Text, FileMode.Open);
9
fsw = new FileStream(this.textBox2.Text, FileMode.Create);
10
byte[] bt = new byte[1024*1024];
11
int rcount = 0;
12
do
13
{
14
Application.DoEvents();
15
rcount = fsr.Read(bt, 0, bt.Length);
16
fsw.Write(bt, 0, rcount);
17
//this.progressBar1.Value = Convert.ToInt32(fsw.Length);
18
this.progressBar1.Value = ((int)(((float)fsw.Length / (float)fsr.Length)*100 )) ;
19
Application.DoEvents();
20
} while (rcount != 0);
21
fsr.Close();
22
fsw.Close();
23
}
24
catch (Exception ex)
25
{
26
if (fsr != null)
27
{
28
fsr.Close();
29
fsr = null;
30
}
31
if (fsw != null)
32
{
33
fsw.Close();
34
fsw = null;
35
}
36
MessageBox.Show(ex.ToString());
37
}
38
}
39![]()
private void button1_Click(object sender, EventArgs e)2
{3
FileStream fsr = null;4
FileStream fsw = null;5
try6
{7
this.progressBar1.Maximum =100;8
fsr = new FileStream(this.textBox1.Text, FileMode.Open);9
fsw = new FileStream(this.textBox2.Text, FileMode.Create);10
byte[] bt = new byte[1024*1024];11
int rcount = 0;12
do13
{14
Application.DoEvents();15
rcount = fsr.Read(bt, 0, bt.Length);16
fsw.Write(bt, 0, rcount);17
//this.progressBar1.Value = Convert.ToInt32(fsw.Length);18
this.progressBar1.Value = ((int)(((float)fsw.Length / (float)fsr.Length)*100 )) ;19
Application.DoEvents();20
} while (rcount != 0);21
fsr.Close();22
fsw.Close();23
}24
catch (Exception ex)25
{26
if (fsr != null)27
{28
fsr.Close();29
fsr = null;30
}31
if (fsw != null)32
{33
fsw.Close();34
fsw = null;35
}36
MessageBox.Show(ex.ToString());37
}38
}39



浙公网安备 33010602011771号