c # – Come elencare tutti i file e le cartelle su un disco rigido?

Voglio elencare tutti i file e le cartelle a cui il mio programma ha accesso e scriverli in un file di testo. Come potrei ottenere la lista? Ho bisogno di un modo che catturi o meno le eccezioni non autorizzate su cartelle che non sono accessibili.

Si prega di provare a utilizzare il codice:

private static IEnumerable Traverse(string rootDirectory) { IEnumerable files = Enumerable.Empty(); IEnumerable directories = Enumerable.Empty(); try { // The test for UnauthorizedAccessException. var permission = new FileIOPermission(FileIOPermissionAccess.PathDiscovery, rootDirectory); permission.Demand(); files = Directory.GetFiles(rootDirectory); directories = Directory.GetDirectories(rootDirectory); } catch { // Ignore folder (access denied). rootDirectory = null; } if (rootDirectory != null) yield return rootDirectory; foreach (var file in files) { yield return file; } // Recursive call for SelectMany. var subdirectoryItems = directories.SelectMany(Traverse); foreach (var result in subdirectoryItems) { yield return result; } } 

Codice cliente:

 var paths = Traverse(@"Directory path"); File.WriteAllLines(@"File path for the list", paths); 

Controlla Directory.GetFiles() e metodi correlati.

Puoi provare con

 var files = from file in Directory.EnumerateFiles(@"your Path", "*.*", SearchOption.AllDirectories) select file; 

Utilizzando Traverse suggerito da Serge e la class DriveInfo è ansible accedere a tutti i file disponibili sul PC.

 DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { if (d.IsReady == true) { var paths = Traverse(d.Name); File.AppendAllLines(@"File path for the list", paths); } } 

Provare

 string[] files = Directory.GetFiles(@"C:\\", "*.*", SearchOption.AllDirectorys); 

Questo dovrebbe darti un array contenente tutti i file sul disco rigido.