PDA

View Full Version : پیدا کردن تعداد فایل ها ی یک درایو



anahita6
دوشنبه 15 تیر 1388, 14:05 عصر
چطور میشه تعداد فایل ها و تعداد فولدر ها ی موجود در یک درایو رو پیدا کرد ؟

vahid.bz
دوشنبه 15 تیر 1388, 14:55 عصر
سلام
کدزیر تعداد رو در پوشه ی vدر درایو eمیده:

void Count(string Source)
{
DirectoryInfo diInfoSource = new DirectoryInfo(Source);
CopyInfo(diInfoSource);
}
public int FileCounter = 0;
public int FolderCounter = 0;
void CopyInfo(DirectoryInfo Source)
{
foreach (FileInfo file in Source.GetFiles())
FileCounter++;
foreach (DirectoryInfo dirSubSource in Source.GetDirectories())
{
++FolderCounter;
CopyInfo(dirSubSource);
}
}

private void button1_Click(object sender, EventArgs e)
{
FileCounter = 0;
FolderCounter = 0;
Count(@"E:\v\");
textBox1.Text = FileCounter.ToString();
textBox2.Text = FolderCounter.ToString();
}
برای درایو access deniedمشکلشه که اگه حلش کردم برات میذارمش.

anahita6
دوشنبه 15 تیر 1388, 14:58 عصر
ممنون از راهنمایی تون. ولی یه متد هم بود که این کار رو میکرد خودم قبلا ازش استفاده کردم اما الان یادم رفته چی بود اگه کسی میدونه لطف کنه یادآوری کنه

vahid.bz
دوشنبه 15 تیر 1388, 17:09 عصر
فکر کنم تابع های زیر همونی که شما می خوای

using System.IO;

Directory.GetFiles("E:\\", "*.*", SearchOption.AllDirectories).Length;
Directory.GetDirectories("E:\\", "*.*", SearchOption.AllDirectories).length;

anahita6
دوشنبه 15 تیر 1388, 22:43 عصر
فکر کنم باید تو یه یک شرطی چک کنیم اگه اجازه دسترسی داشتیم فایل رو ببینه . الان این error رو میده

Access to the path 'E:\System Volume Information' is denied.

anahita6
سه شنبه 16 تیر 1388, 12:01 عصر
بچه ها کسی واسه مشکل من راه حل نداره؟:افسرده::گریه::گریه:

vahid.bz
سه شنبه 16 تیر 1388, 12:13 عصر
گریه نکن یه کاریش میکنیم

Sajjad.Aghapour
سه شنبه 16 تیر 1388, 13:24 عصر
از تابع SetAccessRule استفاده کنید و اون رو باز کنید....


//using System.Security.AccessControl
DirectoryInfo info = new DirectoryInfo("E:\\System Volume Information");

DirectorySecurity security = new DirectorySecurity();
FileSystemAccessRule rule = new FileSystemAccessRule(Environment.UserName,
FileSystemRights.FullControl,
AccessControlType.Allow);

security.SetAccessRule(rule);
info.SetAccessControl(security);

system32
سه شنبه 16 تیر 1388, 13:44 عصر
دوست عزیز از فایل ضمیمه زیر استفاد کن. :چشمک:

anahita6
سه شنبه 16 تیر 1388, 17:20 عصر
از تابع SetAccessRule استفاده کنید و اون رو باز کنید....


//using System.Security.AccessControl
DirectoryInfo info = new DirectoryInfo("E:\\System Volume Information");

DirectorySecurity security = new DirectorySecurity();
FileSystemAccessRule rule = new FileSystemAccessRule(Environment.UserName,
FileSystemRights.FullControl,
AccessControlType.Allow);

security.SetAccessRule(rule);
info.SetAccessControl(security);




دستتون درد نکنه جواب داد و مشکل حل شد اما اگه امکان داره میشه یه مختصر توضیح بدید این مواردی که ست شد چی هستن . برای موارد بعدی میخوام

vahid.bz
سه شنبه 16 تیر 1388, 18:33 عصر
there is another way

using System.Security.AccessControl;


DirectorySecurity ds = Directory.GetAccessControl(Source.FullName);
if (ds.AreAccessRulesProtected == false)
//count