Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519

Как пропустить скрытые папки и файлы

05.06.2019, 21:48. Показов 3128. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Вопрос такой,нужно все файлы из всех папок поместить в ListBox,
но как только попадается скрытая папка программа выдает ошибку.
Можно ли как нибудь игнорировать скрытые папки?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2019, 21:48
Ответы с готовыми решениями:

Скрытые папки и файлы
Доброго времени суток! Это опять я! VB 2008. Есть такая проблема: на работе коллеги приносят флешки, обработанные вирусами: прячут папки...

Скрытые файлы и папки
Ребята помогите! срочно надо влезть в системные папки но не могу их увидеть (все что скрыто не вижу), ставлю в свойства папки...

Скрытые файлы и папки
Здравствуйте) возникла такая проблема подцепил какой то вирус( вроде вылечил флэку на папки в нем пропали как сделать так что они снова...

20
1733 / 1638 / 166
Регистрация: 25.07.2015
Сообщений: 2,701
06.06.2019, 07:26
Цитата Сообщение от Тим70 Посмотреть сообщение
Можно ли как нибудь игнорировать скрытые папки?
Можно , проверяя свойство Attributes.Hidden у DirectoryInfo и FileInfo .
VB.NET
1
If sf.Attributes = FileAttributes.Hidden Then.....
sf -имя файла или директории
1
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 08:36  [ТС]
У меня такой код:

VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
            Pu = FolderBrowserDialog1.SelectedPath.ToString
        End If
    End Sub
 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim files()
        files = IO.Directory.GetFiles(Pu, "*.avi", IO.SearchOption.AllDirectories)
        ListBox1.Items.AddRange(files)
    End Sub
И как тут атрибуты получить?
Наверное надо менять код,делать что то вроде цикла.
0
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
06.06.2019, 09:30
Что то где то как то так
VB.NET
1
2
3
4
5
6
7
8
         Dim files() As FileInfo
        Dim dir As New DirectoryInfo(Pu)
        files = dir.GetFiles("*.avi")
        For Each file In files
            If file.Attributes <> FileAttributes.Hidden Then
                ListBox1.Items.Add(file.Name)
            End If
        Next
0
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 09:45  [ТС]
Пишет: тип FileInfo не определен.
И как я понял,здесь определяются атрибуты файла,
а ошибка выдается для папки.Наверное сначала надо
определить атрибуты папки и скрытые папки пропустить.
Я уже совсем запутался(((
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 10:20
Тим70, а вы уверены, что ошибка возникает из-за скрытых папкок, а не из-за папкок, к которым нет доступа?
0
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 10:37  [ТС]
Отказано в доступе по пути "D:\System Volume Information".
Выдает такую ошибку.А разве это разные папки?
Тогда я вообще ничего не понимаю.
Пусть будут папки к которым нет доступа,и как обойти эту проблему?
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 10:50
Лучший ответ Сообщение было отмечено Тим70 как решение

Решение

Тим70, могу предложить такой вариант
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   Private Sub Search(ByVal fold As String, ByVal mask As String, ByVal Recur As Boolean)
        Dim stack As Stack(Of String) = New Stack(Of String)
        stack.Push(fold)
        Do
            fold = stack.Pop()
            Try
                Dim files() As String = System.IO.Directory.GetFiles(fold, mask)
                For i = 0 To files.Count - 1
                    ListBox1.Items.Add(files(i))
                Next
                If Recur Then 'Если необходимо сканировать подпапки
                    For Each folder In IO.Directory.GetDirectories(fold)
                        stack.Push(folder)
                    Next
                End If
            Catch ex As Exception
                'можно вывести информацию об ошибке
            End Try
        Loop Until stack.Count = 0
    End Sub
Использовать так
VB.NET
1
Search("D:\1", "*.*", True) 'путь к каталогу / маска файлов / искать ли в подпапках
1
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 11:12  [ТС]
Спасибо.Сейчас проверю.

Добавлено через 12 минут
Пишет: Отсутствует аргумент для параметра fold.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 11:16
Тим70, как вызываете процедуру?
0
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 11:17  [ТС]
В этой строчке: MsgBox(Search)
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 11:19
Тим70, 1) это не функция, она ничего не вернет
2) я же показал как её вызывать и что передавать
0
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 11:33  [ТС]
Сделал просто
VB.NET
1
2
3
 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Search("d:\", "*.*", True) 'путь к каталогу / маска файлов / искать ли в подпапках
   End Sub
И похоже все заработало!Спасибо.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 11:49
Тим70, чтобы форма не подвисала на время выполнения, можно запускать процедуру в отдельном потоке
0
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 19:10  [ТС]
Orlangur1991 О потоках я ничего не знаю,пару раз
встречал это название.Надо погуглить.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 19:26
Тим70, почитайте для начала про backgroundworker
Например, тут его можно использовать так, добавляем элемент backgroundworker, далее, при нажатии на кнопку мы запускаем backgroundworker, предварительно проверив, не запущен ли он
VB.NET
1
2
3
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If BackgroundWorker1.IsBusy = False Then BackgroundWorker1.RunWorkerAsync()
    End Sub
В событии DoWork у backgroundworker мы размещаем вызов процедуры
VB.NET
1
2
3
 Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Search("D:\", "*.*", True) 'путь к каталогу / маска файлов / искать ли в подпапках
    End Sub
Необходимо учесть, что обращаться к онтролам формы из другого потока нельзя, так что можно использовать invoke для этого
VB.NET
1
 Invoke(Sub() ListBox1.Items.Add(files(i)))
Ну и у backgroundworker есть событие RunWorkerCompleted, что происходит, когда backgroundworker завершает свою работу
VB.NET
1
2
3
 Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        MsgBox("Завершено!")
    End Sub
1
Любитель
 Аватар для Тим70
1045 / 751 / 161
Регистрация: 27.01.2019
Сообщений: 1,519
06.06.2019, 20:35  [ТС]
Orlangur1991, Да,все отлично работает,и гифка ожила.Только в процедуре стояло 2
label,он заругался,что не в том потоке.Бросил таймер и поместил лабки в него,все заработало.
Огромное спасибо!
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
06.06.2019, 20:45
Тим70, ещё раз, через invoke можно взаимодействовать с контролами, к примеру
VB.NET
1
Invoke(Sub() Label1.Text=Listbox1.Items.Count)
1
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
06.06.2019, 21:11
Чутка поправлю Orlangur1991,
VB.NET
1
Invoke(Sub() Label1.Text=Listbox1.Items.Count.ToString)
P.S. Чегой-то Вы усе про типизацию забуваити.
0
06.06.2019, 21:35

Не по теме:

Uswer,

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.06.2019, 21:35
Помогаю со студенческими работами здесь

Скрытые файлы и папки
Доброго времени суток. Проблема заключается в следующем: на рабочем столе и в отдельных папках мешают, так называемые, скрытые файлы и...

Скрытые папки и файлы
Как сделать скрытые папки и файлы? Перекапал всё но ничего не понял, и в поиске не нашёл! Может кто скажет как делать невидивые файлы или...

Скрытые файлы и папки
Думаю мне могут помочь только здесь. После вируса не показываются скрытые файлы и папки. Делаю Сервис - Свойства папки - вкладка Вид -...

Скрытые папки и файлы
Чёт вообще с моим компом не то дело в том что у меня не отображается в диске С не одна папка и файлы галочка стоит на отображении скрытых...

Отображаются скрытые файлы и папки.
Люди, подскажите пожалуйста, как восстановить отображение скрытых файлов? ОС Windows 7 Ultimate, в параметрах папок галки стоят. Пробовал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru