ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

C# Access Directory
  #1  
Старый 18.03.2010, 20:40
Sharper
Новичок
Регистрация: 10.03.2010
Сообщений: 6
Провел на форуме:
17265

Репутация: 0
Question C# Access Directory

Здравствуйте, стоит такая задача, которую надо реализовать на C#:
Нахождение файла в Директории «C:\Documents and Settings» .
Код:
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 .
Как сделать чтоб пропустило папку для чтение и цыкл пошол дальше.

Последний раз редактировалось Sharper; 18.03.2010 в 20:42..
 
Ответить с цитированием

  #2  
Старый 18.03.2010, 20:46
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Обработать событие catch. Как сделать на шарпе хз..
 
Ответить с цитированием

  #3  
Старый 18.03.2010, 20:51
noxjoker
Познающий
Регистрация: 07.08.2009
Сообщений: 85
Провел на форуме:
705829

Репутация: 53
Отправить сообщение для noxjoker с помощью ICQ
По умолчанию

gold-goblin тут проблема в том, что catch выкинет с цикла ... Я сам не знаю... но есть такой вариант.

Код:
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);
        }
    }
}
Мне тоже интересно ищо варианты...
 
Ответить с цитированием

  #4  
Старый 18.03.2010, 21:01
Sharper
Новичок
Регистрация: 10.03.2010
Сообщений: 6
Провел на форуме:
17265

Репутация: 0
По умолчанию

noxjoker мне этот код не очень подходит... Метод за пускает самого себя ...

Хорошо а может кто знает как получить список папок закрытых для чтения .... Зарание спасибо ....
 
Ответить с цитированием

  #5  
Старый 18.03.2010, 21:28
nitr0
Познающий
Регистрация: 13.03.2007
Сообщений: 32
Провел на форуме:
1259207

Репутация: 32
Отправить сообщение для nitr0 с помощью ICQ
По умолчанию

А если так?
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;
}

 
Ответить с цитированием

  #6  
Старый 19.03.2010, 06:45
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

>>gold-goblin тут проблема в том, что catch выкинет с цикла ...

ничего подобного.

и цикл через "и" пишется.
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #7  
Старый 19.03.2010, 11:40
noxjoker
Познающий
Регистрация: 07.08.2009
Сообщений: 85
Провел на форуме:
705829

Репутация: 53
Отправить сообщение для noxjoker с помощью ICQ
По умолчанию

>>gold-goblin тут проблема в том, что catch выкинет с цикла ...

ничего подобного.

Что нечего подобного ?

Код:
 
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 оно не попадет!
            }
        }



Код:
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 не поможет.
 
Ответить с цитированием

здравствуйте дорогая редакция
  #8  
Старый 19.03.2010, 12:44
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию здравствуйте дорогая редакция

Цитата:
Сообщение от noxjoker  
>>gold-goblin тут проблема в том, что catch выкинет с цикла ...

ничего подобного.

Что нечего подобного ?

Код:
 
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 оно не попадет!
            }
        }
<Удален недоскрин>


Код:
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<stringGetDirs(DirectoryInfo dir)
        {
            List<
stringad = 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<
stringresult GetDirs(dir);
            foreach (var 
s in result)
            {
                
Console.WriteLine(s);
            }
            
Console.ReadKey();
        } 
делаем соответствующие выводы.

учите русский, смешно смотреть на ваши безграмотные посты.

P.S. зачетно на скринах замазал инфу
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...

Последний раз редактировалось W!z@rD; 19.03.2010 в 12:54..
 
Ответить с цитированием

  #9  
Старый 20.03.2010, 05:31
0kt0ber
Новичок
Регистрация: 28.01.2010
Сообщений: 15
Провел на форуме:
52119

Репутация: 17
По умолчанию

Код:
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;
        }
    }
Тут
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сидит ли тут backdoor? Buf АнтиАдмин 6 17.08.2004 06:29



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ