7 / 7 / 0
Регистрация: 13.09.2012
Сообщений: 94

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

25.06.2013, 11:12. Показов 25665. Ответов 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
33474 / 21573 / 8249
Регистрация: 22.10.2011
Сообщений: 37,029
Записей в блоге: 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
18376 / 14307 / 5370
Регистрация: 17.03.2014
Сообщений: 28,991
Записей в блоге: 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
18376 / 14307 / 5370
Регистрация: 17.03.2014
Сообщений: 28,991
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru