PDA

View Full Version : سوالاتی در مورد باز کردن فایل از دیتابیس و بستن فایل باز شده



amir11205
چهارشنبه 03 خرداد 1391, 12:17 عصر
سلام دوستان
من برنامه ای دارم که تو اون فایل های مختلفی ذخیره میشه.اما به چندتا مشکل توش برخوردم:
1-من برای باز کردن فایل ها از داخل دیتابیس مجبور شدم یک فایل میانی بسازم و بعد فایل رو از رو دیتابیس خوندم و توی یه جای هارد ذخیره کردمو بعد اجراش می کنم.اما این وسط مشکلی که دارم اینه که نمی خوام فایل روی هارد ذخیره بشه.برای همین وقتی فرم مربوط به باز شدن فایل رو میبندم تو رویداد FormClosingاش فایل رو پاک میکنم اما این وسط پیغام باز بودن فایل رو میده.حتی موقع باز کردن فایل پیغامی میده که فایل توسط یه برنامه دیگه بازه.بگذریم.من نمیخوام این کار ذخیره کردن فایل روی هارد و همچنین حذف کردن رو انجام بدم.آیا راهی هست که نیاز به این کار نداشته باشم.
2- اگه راهی جز این کار نیس من میخوام این وسط پیغام باز بودن فایلو نده یعنی میخوام موقع بستن فرم مربوط به باز کردن فایل ، فایل رو ببندم و بعد از اون فایلو حذف کنم.چطور می تونم یک فایل باز رو ببندم.
با تشکر

فرید نجفلو
چهارشنبه 03 خرداد 1391, 12:50 عصر
سلام
از using استفده کنید تا مطمن بشید که فایل بسته میشه:

using(System.IO.FileStream fs =new System.IO.FileStream("FilePath",System.IO.FileMode.OpenOrCreate))
{
//Do Here
fs.Close();
}



و اینکه اگه اون فایل رو با نرم افزار دیگهای (مثل Word و ...) باز می کنید باید هنگام بسته شدن و اجرای کد حذف فایل اون برنامه هم بسته شده باشه

amir11205
چهارشنبه 03 خرداد 1391, 13:08 عصر
سلام
از using استفده کنید تا مطمن بشید که فایل بسته میشه:

using(System.IO.FileStream fs =new System.IO.FileStream("FilePath",System.IO.FileMode.OpenOrCreate))
{
//Do Here
fs.Close();
}



منظورتون چیه؟
و دیگه اینکه میدونم باید فایل رو ببندم اما چجوری؟
یه چیزایی دستم اومده اونم اینکه فایل رو استارت کردن Id مربوط به باز کزدنشو بگیرم و موقع حذف کردن فایل با دستور kill فایل رو ببندم اما هنوز یکم مشکل داره

فرید نجفلو
چهارشنبه 03 خرداد 1391, 14:18 عصر
دوست عزیز شما داخل بدنه using فایل رو از دیتابیس خونده و ذخیره می کنید و با using مطمئن می شید که حتی اگه خطایی هم رخ بده فایل توسط برنامه خودتون باز نمی مونه

حالا فیل بسته شده و شما دباره اونو با یه برنامه دیگه که باید به کاربر نمایش بده باز می کنید
پس تا زمانی که اون برنامه فایل رو بتز نگه داره نمی تونید حذفش کنید پس باید اونم بسته بشه

کد زیر یه فایل رو با برنامه پیش فرض باز ود رصورت نیاز تا بسته شدن اون صبر می کنه

System.Diagnostics.Process prc = System.Diagnostics.Process.Start(@"C:\g.xls");
if (prc != null)
{
this.Enabled = false;
prc.WaitForExit();
this.Enabled = true;
}
System.IO.File.Delete(@"C:\g.xls");