Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/120: Рейтинг темы: голосов - 120, средняя оценка - 4.86
7 / 7 / 0
Регистрация: 13.09.2012
Сообщений: 94

Как получить список файлов в папке и подпапках

25.06.2013, 11:12. Показов 25621. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1.Как получить список файлов в выбранной папке и в её подпапках вот в таком вот виде?
Кликните здесь для просмотра всего текста
\Folder\Файл.txt
\Folder\subfolder\subfolder1\Photo\Фото. jpg
\Folder\subfolder\subfolder2\Documents\К урсовая.doc
\Folder\subfolder\subfolder2\Documents\Ф отографии\Фото_25_06_2013
\Folder\subfolder\subfolder2\client\Зака з.txt

______________________________________
2.Как определить сколько получилось файлов?
______________________________________
3.Как записать все это в текстовый_док.txt? (К примеру получился список из 53 файлов, нужно записать все это в текстовый_док.txt, начиная со второй строки документа и до 54(в первой строке будет кол-во файлов))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2013, 11:12
Ответы с готовыми решениями:

Получить список файлов в папке и подпапках
Каким образом получить список файлов в текущей папке приложения и всех подпапках рядом, с учетом доступа? Например: string files =...

Получить список папок в папке но не в подпапках
Здравствуйте. Как можно получить список имен папок и их количество в определенной папке но не в подпапках тоесть просто список папок...

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

34
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
12.11.2015, 09:00
Студворк — интернет-сервис помощи студентам
Памирыч, я новичек, разжевать код можете? 17 пост..
В 8 посте реально все понятно, что откуда, как и куда..., а тут!((
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.11.2015, 10:22
mostApi, готовый пример

На форме кнопка и листбокс

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        GetFindSub("C:", "*.doc")
    End Sub
 
    Sub GetFindSub(ByVal Folder As String, ByVal Mask As String)
        Try
            Application.DoEvents()
            Dim ListFiles As String() = IO.Directory.GetFiles(Folder, Mask)
            Dim ListFolders As String() = IO.Directory.GetDirectories(Folder)
            For Each item In ListFiles
                ListBox1.Items.Add(item)
            Next
            For Each item In ListFolders
                GetFindSub(item, Mask)
            Next
        Catch ex As Exception
        End Try
    End Sub
В результате в список будут выведены файлы DOC

Поправка: форум съел обратный слеш при указании диска
то есть не
C:
а
C:\
2
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
12.11.2015, 12:58
Памирыч, спасибо, то что нужно...
Как сделать прерывание? Например: при нажатии "эскейп" - прервать текущую операцию?
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.11.2015, 13:30
У формы свойство KeyPreview = True

VB.NET
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
    Dim StopSearch As Boolean = False
 
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyData = Keys.Escape Then
            StopSearch = True
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Text = "Поиск..."
        GetFindSub("C:", "*.doc")
    End Sub
 
    Sub GetFindSub(ByVal Folder As String, ByVal Mask As String)
        Try
            Application.DoEvents()
            If StopSearch = True Then
                Me.Text = "Операция отменена"
                Exit Sub
            End If
            Dim ListFiles As String() = IO.Directory.GetFiles(Folder, Mask)
            Dim ListFolders As String() = IO.Directory.GetDirectories(Folder)
            For Each item In ListFiles
                ListBox1.Items.Add(item)
            Next
 
            For Each item In ListFolders
                GetFindSub(item, Mask)
            Next
        Catch ex As Exception
        End Try
    End Sub
Мессиджбоксы в "Операция отменена" ставить не рекомендую, это рекурсия и пока все это дело останавливается, сообщение будет показано несколько раз.

Это кривое решение, первое, что пришло в голову.



На будущее: создавайте свои темы и на каждый вопрос по одной теме
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33467 / 21566 / 8249
Регистрация: 22.10.2011
Сообщений: 37,021
Записей в блоге: 12
12.11.2015, 13:44
Памирыч, а зачем ходить по всей коллекции? Разве так:
VB.NET
1
2
3
4
            ' For Each item In ListFiles
            '     ListBox1.Items.Add(item)
            ' Next
            ListBox1.Items.AddRange(ListFiles)
будет не то же самое?
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
12.11.2015, 13:47
volvo, код выдран из какого-то примера, где помнится, нужно было поэлементно обрабатывать файлы (к ним что-то применялось)

В текущем контексте ты прав, абсолютно лишнее телодвижение
0
 Аватар для mostApi
8 / 6 / 0
Регистрация: 15.05.2015
Сообщений: 350
14.11.2015, 10:39
Памирыч, как получить тот же список в ListBox раздельно по колонкам?
Например: Путь, Имя файла, расшерение, и в дальнейшем атрибуты?
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
14.11.2015, 11:00
mostApi, Вы решили с помощью этой темы написать всю свою программу?

Создавайте свои темы, по одной на каждый вопрос.
2
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
21.12.2018, 12:48
AeroWhite,
Здравствуйте, спасибо за код. Подскажите а как вывести эти данные из Files.txt, чтобы они шли по типу. Типа
*.txt-файлов 12.
*jpg-файлов 25 итп, желательно чтобы каждый тип распределялся в TextBox1, TextBox2

P.S. Попытался изменить тип выводим файлов в
VB.NET
1
Dim Files() As String = IO.Directory.GetFiles(FolderRezult, "*.exe", "*.txt", IO.SearchOption.AllDirectories)
Но ругается только так работает
VB.NET
1
Dim Files() As String = IO.Directory.GetFiles(FolderRezult, "*", IO.SearchOption.AllDirectories)
0
Лень — мое второе и
 Аватар для Orlangur
3231 / 2418 / 688
Регистрация: 28.11.2014
Сообщений: 3,603
Записей в блоге: 3
21.12.2018, 12:52
westcoast89, что?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18365 / 14296 / 5370
Регистрация: 17.03.2014
Сообщений: 28,980
Записей в блоге: 1
21.12.2018, 13:26
westcoast89, как-то так
VB.NET
1
2
3
4
5
6
7
8
9
Dim extensionStats = Directory.GetFiles(FolderRezult, "*.*", SearchOption.AllDirectories) _
    .GroupBy(Function(filePath) Path.GetExtension(filePath), StringComparer.OrdinalIgnoreCase) _
    .Select(Function(g) New With { .Extension = g.Key, .Count = g.Count() }) _
    .OrderByDescending(Function(an0n) an0n.Count) _
    .ToArray()
For Each an0n In extensionStats
    Dim message As String = String.Format("{0} файлов {1}", an0n.Extension, an0n.Count)
    Console.WriteLine(message)
Next
Результаты сортируются по убыванию количества. Если это не требуется, то убери строку с OrderByDescending. Под Windows Forms доделай самостоятельно.

Добавлено через 1 минуту
Предполагается наличие
VB.NET
1
2
Imports System.Linq
Imports System.IO
2
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
21.12.2018, 22:06
Orlangur1991, Вроде ничего) Что не так то?))

Добавлено через 2 минуты
OwenGlendower, Спасибо гляну позже.

Добавлено через 12 минут
OwenGlendower, Еще раз посмотрел вроде все верно составлено, но что-то не так(
Кликните здесь для просмотра всего текста
VB.NET
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
Imports System.Linq
Imports System.IO
Public Class Rezult
 
 
    Dim FolderRezult As String
    Private Sub ButtonDirRezult_Click(sender As Object, e As EventArgs) Handles ButtonDirRezult.Click
        Dim path As String = ""
        If RezultDir1.ShowDialog = DialogResult.OK Then
            FolderRezult = RezultDir1.SelectedPath
        End If
 
    End Sub
 
 
    Private Sub ButtonRezlult2_Click(sender As Object, e As EventArgs) Handles ButtonRezlult2.Click
        If IO.Directory.Exists(FolderRezult!) Then
            Dim extensionStats = Directory.GetFiles(FolderRezult, "*.*", SearchOption.AllDirectories) _
        .GroupBy(Function(filePath) Path.GetExtension(filePath), StringComparer.OrdinalIgnoreCase) _
        .Select(Function(g) New With {.Extension = g.Key, .Count = g.Count()}) _
        .OrderByDescending(Function(an0n) an0n.Count) _
        .ToArray()
            For Each an0n In extensionStats
                Dim message As String = String.Format("{0} файлов {1}", an0n.Extension, an0n.Count)
                Console.WriteLine(message)
            Next
 
        Else
            MsgBox("Введите каталог", 48 + 0, "Ошибка")
        End If
    End Sub
End Class
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18365 / 14296 / 5370
Регистрация: 17.03.2014
Сообщений: 28,980
Записей в блоге: 1
22.12.2018, 05:15
westcoast89, нужно заменить Console.WriteLine на что-то другое. Например на
VB.NET
1
textBox1.Text &= message & vbCrLf
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
22.12.2018, 11:22
OwenGlendower, Спасибо большое. Реально все огонь быстро и без ошибок! Я правда вывел в RichTExtBox, там как то нагляднее что ли получается!) Спасибо еще раз!
0
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
23.12.2018, 12:40
OwenGlendower, В RichTextBox-е все не плохо, но задумался о выведении результатов в Excel. Есть код из FAQ вывода в Xls.
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim Exc As Object
        Exc = CreateObject("Excel.Application")
        Exc.Workbooks.Open("D:\1.xlsx").Activate()
        Exc.Cells(1, 1) = [B]RichTextBox1.Text[/B]
        Exc.Rows(7).Insert(Shift:=-4121)
        Exc.ActiveWorkbook.Save()
        Exc.ActiveWorkbook.Close()
        Exc.Quit()
        Exc = Nothing
    End Sub

Воткнул свой RichTextBox и разумеется он все выводит в ячейку (1,1). Как сделать вывод типа данных с их количеством в xls с нужным видом. Ну например нужно выводить файлы *.ini и файлы *.txt в ячейки (1,3) и (1,4). Реально это как-то сделать?
Я так думаю в вашем коде нудно попробовать условие IF для переменной an0n.Extension. Что-то вроде IF an0n.Extension = "*.txt" then

Добавлено через 9 минут
Вот еще немного подумал и получилось вот, что. Указал что если переменная содержит an0n.Extension содержит ".txt" тогда присвоить значение an0n. Count в переменную TXTStat. Ну а затем вывести в xls файл. Правда надо подготовить xls-файл заранее) Ну то есть ввести в 1,1 ячейку ТХТ-файлов и вывести в ячейку 1,2 значение переменной TXTStat

VB.NET
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Imports System.Linq
Imports System.IO
 
Public Class Rezult
    Dim FolderRezult As String
 
 
 
 
    Private Sub ButtonDirRezult_Click(sender As Object, e As EventArgs) Handles ButtonDirRezult.Click
        Dim path As String = ""
        If RezultDir1.ShowDialog = DialogResult.OK Then
            FolderRezult = RezultDir1.SelectedPath
        End If
 
    End Sub
 
 
 
 
    Dim TXTstat As String 'Обьявление переменной TXTstat
    Private Sub ButtonRezlult2_Click(sender As Object, e As EventArgs) Handles ButtonRezlult2.Click
        If IO.Directory.Exists(FolderRezult!) Then
            Dim extensionStats = Directory.GetFiles(FolderRezult, "*.*", SearchOption.AllDirectories) _
        .GroupBy(Function(filePath) Path.GetExtension(filePath), StringComparer.OrdinalIgnoreCase) _
        .Select(Function(g) New With {.Extension = g.Key, .Count = g.Count()}) _
        .OrderByDescending(Function(an0n) an0n.Count) _
        .ToArray()
            For Each an0n In extensionStats
                Dim message As String = String.Format("{0} файлов {1}", an0n.Extension, an0n.Count)
                RichTextBox1.Text &= message & vbCrLf
                If an0n.Extension = ".txt" Then
                    TXTstat = String.Format(an0n.Count) 'Реализация условия, поиск по раcширению и занесение в переменную TXTstat
                End If
            Next
 
        Else
            MsgBox("Введите каталог", 48 + 0, "Ошибка")
        End If
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
 
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim Exc As Object
        Exc = CreateObject("Excel.Application")
        Exc.Workbooks.Open("D:\1.xlsx").Activate()
        Exc.Cells(1, 2) = TXTstat 'Вывод переменной в ячейку 1,2
        Exc.Rows(7).Insert(Shift:=-4121)
        Exc.ActiveWorkbook.Save()
        Exc.ActiveWorkbook.Close()
        Exc.Quit()
        Exc = Nothing
    End Sub
 
 
End Class
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2018, 12:40

Список файлов в папке и её подпапках
Привет всем скажите пожалуйста как получить список файлов в папке и её подпапках и подпапках папок этих подпапок :D вот такая вот муть)) ...

Как выполнить поиск файлов в папке и подпапках, и подподпапках, и т.д.?
Здравствуйте! Как выполнить поиск файлов в папке и подпапках, и подподпапках, и т.д.? В поисковики не посылать: был, то что...

Как получить список файлов в папке и вывести в CheckedListBox
Как получить список файлов в папке, вывести в лист чекбокс и если на файле(в лист чекбоксе) стоит галочка, то скрыть файл? Буду рад коду...

как можно получить список файлов и папок в указанной папке?
Привет всем. Хочу короче, сделать shell extention. Но мне надо сделать меню, которое содержит _ВСЕ_ файлы и директории указаной...

Как получить в ListBox полный список файлов содержащихся в определенной папке?
народ!!! Помогите плиз!!! Мне надо получить в ListBox полный список файлов содержащихся в определенной папке, в MSDN нашел пример, по...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru