PDA

View Full Version : سوال: خطا در Directory.GetFiles



fakhravari
سه شنبه 24 تیر 1393, 19:58 عصر
با سلام
من میخوام یه تیکه کد بنویسم عکس ها را همه پاک کنه
خطای is denied. میده
private void button1_Click(object sender, EventArgs e) {
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
//MessageBox.Show(d.Name);
string[] ext = new string[2] { "*.jpg", "*.mp3" };
foreach (string found in ext)
{
try
{
string[] extracted = Directory.GetFiles(d.Name, found.ToLower(), System.IO.SearchOption.AllDirectories);


foreach (string file in extracted)
{
Console.WriteLine(file);
}
}
catch { }
}
}
}

abbas.oveissi
سه شنبه 24 تیر 1393, 20:32 عصر
خب مگه این خطا به کد شما ربط داره؟احتمالا مشکل از سطح دسترسی هست

fakhravari
سه شنبه 24 تیر 1393, 21:31 عصر
عزیز دل برادر هر چی سطح دسترسی یا غیره.
فایل سیستمی مهم نیست برام
فقط دچار خطا نکنه

abbas.oveissi
سه شنبه 24 تیر 1393, 22:26 عصر
عزیز دل برادر هر چی سطح دسترسی یا غیره.
فایل سیستمی مهم نیست برام
فقط دچار خطا نکنه
خب منظورم این بود برنامتون را Run As Administrator بکنید تا ببینید این مشکل حل میشه یا نه.شاید اصن به اینی که من میگم ربط نداشته باشه.

fakhravari
سه شنبه 24 تیر 1393, 23:37 عصر
عزیز توی دیباگ این خطا میده هیچ ربطی نداره به گفته های شما

Davidd
چهارشنبه 25 تیر 1393, 08:21 صبح
توي درايوها پوشه هاي سيستمي وجود داره كه حتي اگه ادمين هم باشي نميشه بازشون كرد مثل پوشه System volume information. راهش اينه كه پوشه هاي داخل درايو داخل ليست بريزي و يكي يكي توي اونا جستجو انجام بدي (البته توي try catch كه اگه نتونست پوشه رو بخونه، بره پوشه بعدي)
من دقيقا همين كارو انجام دادم. توي امضام يه پروژه هست كه ميتوني دانلود كني. من ليست پوشه ها و زير پوشه ها رو داخل يه صف ميريزم و يكي يكي توي پوشه ها جستجو مي كنم (شبيه پيمايش سطحي درخت)