PDA

View Full Version : پاک کردن فایل



mohsen1900
چهارشنبه 16 آذر 1390, 21:05 عصر
آیا میشه با c# یه فایل مشخص تو درایو مثلاً c پاک (پاک شدن کامل)کرد

mmd2009
چهارشنبه 16 آذر 1390, 21:41 عصر
با سلام

با کد زیر میشه این کارو کرد :


File.Delete(@"c:\New Bitmap Image.bmp");


موفق باشید

mohsen1900
چهارشنبه 16 آذر 1390, 21:55 عصر
با تشکر فراوان از شما
من وقتی می خوام فایل رو پاک کنم خطا میده که یه برنامه ای از این فایل داره استفاده می کنه حالا چجوری میشه اون پراسس رو از بین برد و فایل رو پاک کرد

mmd2009
چهارشنبه 16 آذر 1390, 23:33 عصر
لطفا متن خطا رو قرار بدید

Hossenbor
پنج شنبه 17 آذر 1390, 09:15 صبح
خوب چجوری میشه اون پروسس که از این فایل استفاده می کنه پیدا کرد

mohsen1900
پنج شنبه 17 آذر 1390, 11:38 صبح
mmd2009 عزیز خطا اینه
The process cannot access the file 'c:\KarmandHokm.bmp' because it is being used by another process.

mmd2009
پنج شنبه 17 آذر 1390, 14:43 عصر
ببینید شما بعد از اینکه از یک فایل درون برنامتون استفاده کردید باید فضای اون رو Dispose بکنید یا اصطلاحا فضای اون رو ازاد بکنید این خطا هم زمانی رخ میده برای شما که هنوز فضای اختصاص داده شده به فایل رو ازاد نکرده اید و دنبال یک کار دیگه بر روی همون فایلی هستید که داره توسط یک پروسس دیگه عملیاتی روش انجام میشه. فرضا اینجارو ببینید :


pictureBox1.Image = Image.FromFile(@"c:\0011 - 0.jpg");
File.Delete(@"c:\0011 - 0.jpg");


در کد بالا یک خطا اتفاقل میفته :



The process cannot access the file 'c:\0011 - 0.jpg' because it is being used by another process.


که میگه این فایل داره استفاده میشه توسط دیگر پروسس. شما باید فضاشو اینطوری ازاد بکنید :


pictureBox1.Image = Image.FromFile(@"c:\0011 - 0.jpg");
pictureBox1.Image.Dispose();


سپس اقدام به حذف یا دیگر عملیات روی اون رو داشته باشید.

موفق باشید

Hossenbor
پنج شنبه 17 آذر 1390, 15:11 عصر
منظورم یک چیزی تو برنامه killme هستش

mohsen1900
پنج شنبه 17 آذر 1390, 16:23 عصر
mmd2009 عزیز من تو برنامم از فرم جاری عکس می گیرم و آن رو تو database ذخیره می کنم بعدش می خوام پاک شه در حقیقت به کامپوننتی مثل picturebox تو برنامم bind نیست حالا چی رو باید dispose کنم

mmd2009
پنج شنبه 17 آذر 1390, 16:51 عصر
خب عکسی که میگیرید رو کجا میذارید که بعدش میبرید ذخیرش میکنید همون رو dispose کنید
در صورت امکان کدتون رو قرار بدید

موفق باشید

mohsen1900
پنج شنبه 17 آذر 1390, 17:02 عصر
Bitmap TasvieHokm = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(TasvieHokm, new Rectangle(0, 0, this.Width, this.Height));
TasvieHokm.Save("C:\\KarmandHokm.bmp");
MemoryStream memKarmandTasvir = new MemoryStream();
Image.FromFile(@"C:\KarmandHokm.bmp").Save(memKarmandTasvir, Image.FromFile(@"C:\KarmandHokm.bmp").RawFormat);
بعدش هم دستور مربوط به ثبت عکس تو پایگاه داده
memorystream - connection-adapter- dataset همه رو هم dispose کردم ولی جواب نمی ده

mmd2009
جمعه 18 آذر 1390, 03:21 صبح
ببينيد شما کلا راهي که رفتيد اشتباهه. شما اونطور که فکر کنم مشخصه يک عکس رو درست کردي بعدش ذخيرش کردي تو هارد کامپيوتر و بعد ذخيره شدن اومدي دوباره همون عکسي که ذخيرش کردي رو خوندي که بزاريش تو ms و حالا بعد از Insert ميخواي حذفش کني اون عکس رو.

خب چرا اصلا عکس رو ذخيره کردي تو هارد کامپيوتر ؟

خيلي راحت بدون درگيري هاي زياد ميتوني به اين صورت کدت رو اصلاح بکني :


var tasvieHokm = new Bitmap(Width, Height);
DrawToBitmap(tasvieHokm, new Rectangle(0, 0, Width, Height));
var memKarmandTasvir = new MemoryStream();
tasvieHokm.Save(memKarmandTasvir, ImageFormat.Bmp);


موفق باشيد