با استفاده از بافر می توان روی مقدار کپی شدن یه فایل مدیریت کرد و مانور داد
موارد مورد نیاز برای این مثال:
1. یک Progress Bar
2. یک Button
این کد متد اصلی ما می باشد
public void CopyFile(string FileSource, string FileDestination)
{
int NumRead;
long FileLength;
System.IO.FileStream From = new System.IO.FileStream(FileSource, System.IO.FileMode.Open);
System.IO.FileStream To = new System.IO.FileStream(FileDestination, System.IO.FileMode.CreateNew);
byte[] buffer = new byte[1024];
FileLength = From.Length;
progressBar1.Minimum = 0;
progressBar1.Maximum = (int)FileLength;
while (FileLength>0)
{
System.IO.BinaryReader Reader = new System.IO.BinaryReader(From);
NumRead = Reader.Read(buffer, 0, 1024);
FileLength = FileLength - NumRead;
System.IO.BinaryWriter Writer = new System.IO.BinaryWriter(To);
Writer.Write(buffer, 0, NumRead);
progressBar1.Value = progressBar1.Value + NumRead;
Writer.Flush();
}
From.Close();
To.Close();
if (progressBar1.Value>99)
{
progressBar1.Value = 0;
MessageBox.Show("Copy Finished successfuly");
}
}
از این کد برای فراخوانی متد اصلی در رویداد Button استفاده می شود
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
folderBrowserDialog1.ShowDialog();
System.IO.FileInfo d=new System.IO.FileInfo(openFileDialog1.FileName.ToStri ng());
CopyFile(openFileDialog1.FileName.ToString(), folderBrowserDialog1.SelectedPath.ToString()+"\\"+ d.Name.ToString());
}