powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нет доступа к папке при поиске файлов.
18 сообщений из 18, страница 1 из 1
Нет доступа к папке при поиске файлов.
    #38931600
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Пишу приложение для поиска файлов на дисках. При работе программы возникает исключение - "Отказано в доступе по пути E:\....".
Каким образом можно решить проблему или хотя сделать так, чтобы пропускать эти папки?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
private void Button1_Click(object sender, EventArgs e)
        {
            FileInfo[] files = null;
            DirectoryInfo directory = new DirectoryInfo(comboText);
            DirectoryInfo[] directories = directory.GetDirectories();
            // Проходимся по всем директориям на этом диске и заносим в массив все файлы
            for(int i = 0; i < directories.Length; i++)
            {                
                files = directories[i].GetFiles();
            }            
          
            foreach (FileInfo file in files)
            {
                StreamReader reader = null;
                if (file.Name == "Test.txt")
                {
                    try
                    {
                        if (file.Length != 0)
                        {
                            reader = file.OpenText();
                            string str = null;
                            while ((str = reader.ReadLine()) != null)
                            {
                                tbx_PreviewFile.Text += str + Environment.NewLine;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    finally
                    {
                        reader.Close();
                    }
                }
            }
            return;
        }


Буду признателен за помощь!
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38931604
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обложить трай кетчем
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38931656
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
             try
            {
                DirectoryInfo directory = new DirectoryInfo(comboText);
                DirectoryInfo[] directories = directory.GetDirectories();
                
                for (int i = 0; i < directories.Length; i++)
                {
                    files = directories[i].GetFiles();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


Но ошибка та же.
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38931728
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну конечно, а вы думали что try поменяет ошибку?
уберите MessageBox.Show (ex.Message);
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38932972
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RomaMarusykну конечно, а вы думали что try поменяет ошибку?
уберите MessageBox.Show (ex.Message);

Причём здесь сообщение, которое выводится? Что это меняет?
Убрал - программа работает также. files - пустой!
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933044
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле убери MessageBox.Show (ex.Message); и появился continue
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933048
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomaMarusykв смысле убери MessageBox.Show (ex.Message); и появился поставь continue
сори не то вставил )
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933086
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
erman,

Код: c#
1.
2.
3.
4.
for(int i = 0; i < directories.Length; i++)
{                
    files = directories[i].GetFiles();
}

В итоге в files будет список файлов из последнего каталога. Остальные потеряются.


Код: c#
1.
if (file.Name == "Test.txt")

Почему-бы не использовать шаблон поиска?
Код: c#
1.
GetFiles("Test.txt")




Далее вижу ещё ошибку: reader.Close() в блоке finally вызовется в любом случае даже если не сработало условие if (file.Length != 0) и не ридер не был открыт. Будет NRE.


Код: c#
1.
2.
3.
4.
while ((str = reader.ReadLine()) != 
{
    tbx_PreviewFile.Text += str + Environment.NewLine;
}

Обновление графического компонента происходит очень медленно. Если файл большой - пользователь повесится. Лучше прочесть весь текст сразу (не нужно построчно) и добавить в текстбокс за один раз.


Зачем путь получается из комбобокса? Есть стандартный диалог FolderBrowserDialog для этой цели.
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933190
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik,

Код: c#
1.
2.
3.
4.
for(int i = 0; i < directories.Length; i++)
{                
    files = directories[i].GetFiles();
}



Как здесь взять все файлы? И как прочесть весь файл сразу и вставить в текстовое поле?
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933341
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanpetalvik,

Код: c#
1.
2.
3.
4.
for(int i = 0; i < directories.Length; i++)
{                
    files = directories[i].GetFiles();
}



Как здесь взять все файлы? И как прочесть весь файл сразу и вставить в текстовое поле?

надо понимать у вас к некоторым путям нету доступа, но вы хотите получить те файлы, к которым есть?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
for(int i = 0; i < directories.Length; i++)
{                
   try 
  {
    files = directories[i].GetFiles();
  }
  catch(Exception x)
  {
     Console.WriteLine("eto hrenovyj put: "+x.Message);
  }
}
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933471
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh,
Да, пусть будут те к каким есть доступ. Объясните, пожалуйста, как в массив files записать все файлы всех директорий, которые перебираются в этом цикле?
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38933682
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanWinnipuh,
Да, пусть будут те к каким есть доступ. Объясните, пожалуйста, как в массив files записать все файлы всех директорий, которые перебираются в этом цикле?

вам выше написали, что вы так задумали, перезаписываете результаты предыдущей выборки.
Добавляйте в массив или список
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38934786
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WinnipuhermanWinnipuh,
Да, пусть будут те к каким есть доступ. Объясните, пожалуйста, как в массив files записать все файлы всех директорий, которые перебираются в этом цикле?

вам выше написали, что вы так задумали, перезаписываете результаты предыдущей выборки.
Добавляйте в массив или список

Так это ж и есть массив!?
Код: c#
1.
FileInfo[] files = null;


???
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38934812
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanТак это ж и есть массив!?

Это массив файлов в одном каталоге. А каталогов несколько .

Вставь цикл foreach внуть цикла for.
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38934833
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanWinnipuhпропущено...


вам выше написали, что вы так задумали, перезаписываете результаты предыдущей выборки.
Добавляйте в массив или список

Так это ж и есть массив!?
Код: c#
1.
FileInfo[] files = null;


???

вместо того, чтобы рисовать '???' задумались бы над содеянным....

пуззле:

1-й оборот цикла: c:\windows
files = directories[i].GetFiles();

2-й оборот цикла: c:\temp
files = directories[i].GetFiles();

что стало со списком файлов фолдера из 1-го оборота c:\windows?
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38934928
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuhermanпропущено...


Так это ж и есть массив!?
Код: c#
1.
FileInfo[] files = null;


???

вместо того, чтобы рисовать '???' задумались бы над содеянным....

пуззле:

1-й оборот цикла: c:\windows
files = directories[i].GetFiles();

2-й оборот цикла: c:\temp
files = directories[i].GetFiles();

что стало со списком файлов фолдера из 1-го оборота c:\windows?
А что нельзя сделать так, чтобы files пополнялся новыми элементами?
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38934956
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvikermanТак это ж и есть массив!?

Это массив файлов в одном каталоге. А каталогов несколько .

Вставь цикл foreach внуть цикла for.

Foreach цикл используется только для вывода информации. Что Вы имеете ввиду? Можно кодом.
...
Рейтинг: 0 / 0
Нет доступа к папке при поиске файлов.
    #38935018
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanWinnipuhпропущено...


вместо того, чтобы рисовать '???' задумались бы над содеянным....

пуззле:

1-й оборот цикла: c:\windows
files = directories[i].GetFiles();

2-й оборот цикла: c:\temp
files = directories[i].GetFiles();

что стало со списком файлов фолдера из 1-го оборота c:\windows?
А что нельзя сделать так, чтобы files пополнялся новыми элементами?

наконец-то!
можно, для этого есть вы в этом деле!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нет доступа к папке при поиске файлов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]