2013-09-07 3 views
-2

Мне нужно что-то, что пойдет и проверит как System.IO.DirectoryInfo(@"d:\");, но для каждого жесткого диска, кроме C E F. Мне нужно что-то стабильное, если я буду покупать новые жесткие диски в будущем.C# DirectoryInfo на нескольких жестких дисках

+0

непонятно, что вы пытаетесь достичь –

+0

Вы сделали заявление. В чем вопрос? –

+0

Вместо выполнения (@ "d: \"); как я могу использовать, например, жесткий диск g? –

ответ

4

Непонятно, что вы просили, но я думаю, вы можете использовать метод Environment.GetLogicalDrives().

Возвращает массив строк, содержащий имена логических дисков на текущем компьютере.

string[] drives = Environment.GetLogicalDrives(); 
foreach (var drive in drives) 
{ 
    Console.WriteLine(drive); 
} 

В моем компьютере, выход;

C:\ 
D:\ 
Q:\ 
Y:\ 
Z:\ 

enter image description here

Как Alternativly, взгляните на DriveInfo.GetDrives метод.

Извлекает имена дисков всех логических дисков на компьютер.

Пример от MSDN страница;

DriveInfo[] allDrives = DriveInfo.GetDrives(); 

    foreach (DriveInfo d in allDrives) 
    { 
     Console.WriteLine("Drive {0}", d.Name); 
     Console.WriteLine(" File type: {0}", d.DriveType); 
     if (d.IsReady == true) 
     { 
      Console.WriteLine(" Volume label: {0}", d.VolumeLabel); 
      Console.WriteLine(" File system: {0}", d.DriveFormat); 
      Console.WriteLine(
       " Available space to current user:{0, 15} bytes", 
       d.AvailableFreeSpace); 

      Console.WriteLine(
       " Total available space:   {0, 15} bytes", 
       d.TotalFreeSpace); 

      Console.WriteLine(
       " Total size of drive:   {0, 15} bytes ", 
       d.TotalSize); 
     } 

Вы можете получить эти данные;

Drive C:\ 
    File type: Fixed 
    Volume label: 
    File system: NTFS 
    Available space to current user: 447202275328 bytes 
    Total available space:    447202275328 bytes 
    Total size of drive:    500105216000 bytes 
Drive D:\ 
    File type: CDRom 
Drive Q:\ 
    File type: Network 
    Volume label: HDS4 
    File system: NTFS 
    Available space to current user:  4053897216 bytes 
    Total available space:    4053897216 bytes 
    Total size of drive:    1188893290496 bytes 
Drive Y:\ 
    File type: Network 
    Volume label: Data 
    File system: NTFS 
    Available space to current user:  5525561344 bytes 
    Total available space:    5525561344 bytes 
    Total size of drive:    72958230528 bytes 
Drive Z:\ 
    File type: Network 
    Volume label: HDS3 
    File system: NTFS 
    Available space to current user: 147224600576 bytes 
    Total available space:    147224600576 bytes 
    Total size of drive:    1230321479680 bytes 
+0

Возможно ли использовать (@ "c: \ FTP \, g: \ FTP \")? –

+0

@ IngelaTörner Я не понимаю. 'c: \ FTP' и' g: \ FTP' - это папки. Вам нужна информация об этих папках для всех дисков? Просьба уточнить. –

+0

Мне нужно получить каталог с несколькими жесткими дисками с одним утверждением. Помимо C, E, F. –

1

Я думаю, что вы ищете

var drives = DriveInfo.GetDrives(); 
foreach (var di in drives) 
{ 
    Console.WriteLine(di.Name); 
} 
0

Вы можете получить имена дисков всех логических дисков на компьютере с помощью DriveInfo.GetDrives Method

Этот метод возвращает массив DriveInfo. Используя свойство DriveInfo.DriveType, вы также можете исключить, например, CDRoms или сетевые диски.

0

Хочешь это пойти?

public static IEnumerable<DirectoryInfo> GetSelectedDirectoryInformation(String argDirectoryName, IEnumerable<String> argExcludeDrives) 
{ 
    foreach(DriveInfo di in DriveInfo.GetDrives()) 
    { 
     if ((argExcludedDrives == null) || (!argExcludedDrives.Contains(di.Name))) 
     { 
     string directory = Path.Combine(di.Name,argDirectoryName); 
     if (DirectoryExists(directory)) 
     { 
      yield return new DirectoryInfo(directory); 
     } 
     } 
    } 
} 

Теперь в один шаг, вы можете сделать

foreach(DirectoryInfo di in GetSelectedDirectoryInformation("FTP",new string[] {@"C:\",@"E:\",@"F:\"})) 
{ 
    // Do something with it. 
} 
+0

Если кто-то умный приходит и делает это с помощью одной лямбды, я дам им 10. –

Смежные вопросы