Здравствуйте, стоит такая задача, которую надо реализовать на C#: Нахождение файла в Директории «C:\Documents and Settings» . Code: DirectoryInfo dir = new DirectoryInfo(“C:\Documents and Settings”); foreach (FileInfo file in dir.GetFiles(n_file, SearchOption.AllDirectories)) { Console.WriteLine(file.FullName); } Но в папке C:\Documents and Settings есть папки которые закрыты для чтения когда цыкл доходит до этой папки он выкидывает в catch . Как сделать чтоб пропустило папку для чтение и цыкл пошол дальше.
gold-goblin тут проблема в том, что catch выкинет с цикла ... Я сам не знаю... но есть такой вариант. Code: class Program { static void Main(string[] args) { ViewDirectory("C:\\Documents and Settings\\"); Console.Read(); } static void ViewDirectory(string path) { try { DirectoryInfo dirs = new DirectoryInfo(path); foreach (DirectoryInfo dir in dirs.GetDirectories()) { Console.WriteLine(dir.ToString()); ViewDirectory(dir); } } catch (Exception ex) { Console.WriteLine("\tWarn. Path: {0}", path); } } } Мне тоже интересно ищо варианты...
noxjoker мне этот код не очень подходит... Метод за пускает самого себя ... Хорошо а может кто знает как получить список папок закрытых для чтения .... Зарание спасибо ....
А если так? PHP: DirectoryInfo dir = new DirectoryInfo(“C:\Documents and Settings”); foreach (FileInfo file in dir.GetFiles(n_file,SearchOption.AllDirectories)) { try { Console.WriteLine(file.FullName); } catch { continue; } }
>>gold-goblin тут проблема в том, что catch выкинет с цикла ... ничего подобного. и цикл через "и" пишется.
>>gold-goblin тут проблема в том, что catch выкинет с цикла ... ничего подобного. Что нечего подобного ? Code: DirectoryInfo dir = new DirectoryInfo("C:\\Documents and Settings\\"); foreach (FileInfo file in dir.GetFiles("wand.dat", SearchOption.AllDirectories)) { try { Console.WriteLine(file.FullName); } catch { // Когда он дойдет до папки которая закрыта для чтения в этот catch оно не попадет! } } Code: DirectoryInfo dir = new DirectoryInfo("C:\\Documents and Settings\\"); try { foreach (FileInfo file in dir.GetFiles("wand.dat", SearchOption.AllDirectories)) { Console.WriteLine(file.FullName); } } catch { // Когда он доходит до папки которая закрыта для чтения он попадает в catch и цыкл не продолжается. } Делаем вывод что catch не поможет.
здравствуйте дорогая редакция PHP: private static List<string> GetDirs(DirectoryInfo dir) { List<string> ad = new List<string>(); try { foreach (var directory in dir.GetDirectories()) { ad.AddRange(GetDirs(directory)); } } catch (UnauthorizedAccessException) { ad.Add(dir.FullName); } return ad; } static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo("C:\\Documents and Settings\\"); List<string> result = GetDirs(dir); foreach (var s in result) { Console.WriteLine(s); } Console.ReadKey(); } делаем соответствующие выводы. учите русский, смешно смотреть на ваши безграмотные посты. P.S. зачетно на скринах замазал инфу
Code: using System; using System.Collections.Generic; using System.IO; class Program { static void Main() { // Get all files in Documents List<string> dirs = FileHelper.GetFilesRecursive(@"C:\Temp"); foreach (string p in dirs) { Console.WriteLine(p); } // Write count Console.WriteLine("Count: {0}", dirs.Count); Console.Read(); } } static class FileHelper { public static List<string> GetFilesRecursive(string b) { // 1. // Store results in the file results list. List<string> result = new List<string>(); // 2. // Store a stack of our directories. Stack<string> stack = new Stack<string>(); // 3. // Add initial directory. stack.Push(b); // 4. // Continue while there are directories to process while (stack.Count > 0) { // A. // Get top directory string dir = stack.Pop(); try { // B // Add all files at this directory to the result List. result.AddRange(Directory.GetFiles(dir, "*.*")); // C // Add all directories at this directory. foreach (string dn in Directory.GetDirectories(dir)) { stack.Push(dn); } } catch { // D // Could not open the directory } } return result; } } Тут