PDA

View Full Version : حرفه ای: ذخیره stram به صورت یک فایل



amirsite
جمعه 20 خرداد 1390, 20:43 عصر
اگر بخوام یک stream رو به صورت یک فایل ذخیره کنم از چه کدی استفاده کنم؟

محمد باقری نسب
شنبه 21 خرداد 1390, 08:40 صبح
شما باید stream رو بخونیدش و محتواش رو داخل FileStream بریزید. مثلا:

System.IO.Stream yourstream = /*مورد نظر شما stream*/;

byte[] b = new byte[yourstream.Length];
yourstream.Read(b, 0, b.Length);
yourstream.Close();
yourstream.Dispose();

System.IO.FileStream fs = new System.IO.FileStream(@"c:\temp.dat", System.IO.FileMode.Create);
fs.Write(b, 0, b.Length);
fs.Close();
fs.Dispose();

mehdi.mousavi
شنبه 21 خرداد 1390, 10:19 صبح
سلام.
اگر طول فایل زیاد باشه، allocate کردن حافظه به اون میزان کار درستی نیست. (فرض کنید فایل مورد نظر 2GB باشه، اونوقت شما دارید یه byte array به سایز 2GB ایجاد می کنید تا بتونید فایل رو به یکباره بخونید). جای اینکار، باید یک Buffer (مثلا 4KB، 8KB و ...) بگیرید و در یک Loop تا وقتی میشه از Input Stream داده ها رو خوند، اطلاعات رو بگیرید و در فایل خروجی Write اش کنید. برای مشاهده کد می تونید پاسخ Jon Skeet در این Thread (http://stackoverflow.com/questions/411592/how-do-i-save-a-stream-to-a-file) رو بررسی کنید.

موفق باشید.