PDA

View Full Version : چرا هنگام delete كردن فايلي كه وجود ندارد ، برنامه خطا نميدهد؟؟؟



shahryari
سه شنبه 10 بهمن 1391, 21:16 عصر
با سلام
با دستور زير يك فايلي را كه وجود ندارد ميخواهم حذف كنم !!!
قاعدتا بايد در برنامه Exception بوجود بيايد (كه نمي آيد)!!!!:متعجب:
كد حذف:

IO.File.Delete("F:\test.txt")

آيا اين يك باگ است در VS2010 ؟؟؟
يا احيانا تنظيماتي در VS من بهم خورده :بامزه:

xxnagin
سه شنبه 10 بهمن 1391, 22:37 عصر
سلام
منم امتحان کردم مثل مال شما برنامه خطا نمیده

و از این کد معولا استفاده میشه یا راهای دیگه

If IO.File.Exists("F:\test.txt") Then
IO.File.Delete("F:\test.txt")
Else
MsgBox("فایل پیدا نشد")
End If

JaVa
سه شنبه 10 بهمن 1391, 22:43 عصر
با سلام
با دستور زير يك فايلي را كه وجود ندارد ميخواهم حذف كنم !!!
قاعدتا بايد در برنامه Exception بوجود بيايد (كه نمي آيد)!!!!:متعجب:
كد حذف:

IO.File.Delete("F:\test.txt")

آيا اين يك باگ است در VS2010 ؟؟؟
يا احيانا تنظيماتي در VS من بهم خورده :بامزه:

شهریار جان منم همین کد شما رو امتحان کردم خطا هم اصلا نگرفت.:متفکر: فایل هم وجود نداشت.:متفکر:

shahryari
سه شنبه 10 بهمن 1391, 22:49 عصر
با تشكر از حسن توجه
به نظر مياد اين يك باگ است :گیج:
البته در مسير دهي فايل اگر به اين شكل استفاده بشه درست كار ميكنه : "F:\test\tes.txt"

shahryari
سه شنبه 10 بهمن 1391, 22:52 عصر
سلام
منم امتحان کردم مثل مال شما برنامه خطا نمیده

و از این کد معولا استفاده میشه یا راهای دیگه

If IO.File.Exists("F:\test.txt") Then
IO.File.Delete("F:\test.txt")
Else
MsgBox("فایل پیدا نشد")
End If

با سلام
مسئله سر اين نيست كه با شرط بررسي كنيم ببينيم فايل وجود دارد يا نه؟؟؟
مسئله اين است كه چرا در حذف كردن فايلي كه وجود ندارد استثنا ايجاد نميشود كه منجر به اكسپشن شود؟؟؟:متفکر:

shahryari
سه شنبه 10 بهمن 1391, 22:57 عصر
اگر كد را داخل تراي .. كش بذاريد و نكته توقف بذاريد و كد را تريس كنيد متوجه منظور من ميشويد كه هيچ استثنايي رخ نميدهد
براي اولين بار برايم جالب است

Hybrid
سه شنبه 10 بهمن 1391, 22:58 عصر
با سلام
مسئله سر اين نيست كه با شرط بررسي كنيم ببينيم فايل وجود دارد يا نه؟؟؟
مسئله اين است كه چرا در حذف كردن فايلي كه وجود ندارد استثنا ايجاد نميشود كه منجر به اكسپشن شود؟؟؟


به نظر مياد اين يك باگ است

سلام ، خیر دوست عزیز باگ نیست ،

دوست داری Exception ایجاد بشه ؟ دوست داری try/catch بنویسی ؟ داخل MSDN نوشته که اگه فایلی وجود نداشت هیچ کاری رو انجام نده ، از این ساده تر ؟


If the file to be deleted does not exist, no exception is thrown.

shahryari
سه شنبه 10 بهمن 1391, 23:06 عصر
اما من مسير فايل را كه كمي تغيير ميدهم اين اتفاق ميوافتد
مثال :
بجاي "F:\test.txt" بنويسم "F:\test\tes.txt"

داخل MSDN نوشته که اگه فایلی وجود نداشت هیچ کاری رو انجام نده ، از این ساده
اگر اين چنين است كه ميفرماييد بايد در همه حالات صادق باشد

xxnagin
سه شنبه 10 بهمن 1391, 23:12 عصر
خوب احتمالا به folder حساس هستش و اگر سر درایو باشه کار نمیکنه
یعنی فایل حتما باید داخل پوشه باشه تا پاک کنه

Hybrid
سه شنبه 10 بهمن 1391, 23:17 عصر
اگر اين چنين است كه ميفرماييد بايد در همه حالات صادق باشد
در همه حالات صادقه ،واسه من که هیچ Exception ای پرتاب نمیشه .

توجه کنید واسه Directory استثنا DirectoryNotFoundException پرتاب میشه ولی واسه فایل نه . شما نوشتین File.Exist

فکر میکنم در پست قبلیم یه کم تند حرف زدم ، عذر میخوام .

shahryari
سه شنبه 10 بهمن 1391, 23:22 عصر
در همه حالات صادقه ،واسه من که هیچ Exception ای پرتاب نمیشه .
لطفا اين دوتا را تست كنيد
دراين حالت اكسپشن ايجاد ميشه

IO.File.Delete("F:\test\test.txt")

در اين حالت نه:

IO.File.Delete("F:\test.txt")

Hybrid
سه شنبه 10 بهمن 1391, 23:33 عصر
خیر ایجاد نمیشه(در صورت وجود دایرکتوری test) ، پست قبلیم رو ویرایش کردم دیدید ؟ احتمالا شما اصلا فولدری به نام test ندارین و استثنا DirectoryNotFoundException پرتاب میشه .