PDA

View Full Version : کپی فایل



arashsoft
پنج شنبه 11 دی 1393, 21:34 عصر
سلام چگونه میشود فایلی کپی شود و همراه با آن prograssbar نمایش یابد:متفکر:

Rejnev
پنج شنبه 11 دی 1393, 21:59 عصر
با استفاده استریم ها (Stream) بخش بخش (مثلا هزار بایت هزار بایت) میخونن و بعد از خوندن هر چند بایت، توی فایل جدید میریزند.
طول کل فایل و مقدار بایتهای خونده شده برای نمایش پروگرس مورد نیازه. ضمنا باید بصورت چند نخی کپی فایل رو بنویسین تا لایه UI از کار نیفته و Not Response نشه.

arashsoft
پنج شنبه 11 دی 1393, 22:07 عصر
لطفا سورس بگذارید

arashsoft
یک شنبه 14 دی 1393, 20:23 عصر
لطفا سورس بگذارید اگر می توانید

Share & Learn
یک شنبه 14 دی 1393, 20:51 عصر
سلام
خوب شما باید یکم بنویسید جایی که مشکل دارید بچه ها کمک کنن، اینجوری نمی شه که براتون کد بنویسن
من یه تایع کپی و نحوه ی استفاده ش رو می ذارم اینجا، شما می تونید با توجه به برنامه تون آرگومان ورودی هم براش در نظر بگیرید
خدمت شما:


private void button1_Click(object sender, EventArgs e)
{
Copy();
MessageBox.Show("Copy Done !!!");
progressBar1.Value = 0;
}
void Copy()
{
int halfAMeg = (int)(1024 * 1024 * 0.5);

FileStream strIn = new FileStream("filePathIn", FileMode.Open);
FileStream strOut = new FileStream("filePathOut", FileMode.Create);

byte[] buf = new byte[halfAMeg];
while (strIn.Position < strIn.Length)
{
int len = strIn.Read(buf, 0, buf.Length);
strOut.Write(buf, 0, len);

SetProBar(strIn.Position, strIn.Length);
}
}

private delegate void SetProBar_CallBack(long val, long max);
private void SetProBar(long val, long max)
{
if (progressBar1.InvokeRequired)
{
SetProBar_CallBack callBack = new SetProBar_CallBack(SetProBar);
this.Invoke(callBack, new object[] { val, max });
}
else
{
progressBar1.Maximum = Int32.MaxValue;
progressBar1.Value = (int)(Int32.MaxValue / (max / val));
}
}


موفق باشید :)