38 / 38 / 16
Регистрация: 14.03.2012
Сообщений: 168
1

Поиск файлов по папке и подпапкам (поправить код)

05.02.2014, 19:34. Показов 1611. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код поиска файлов по маске:
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
Imports System
Imports System.IO
 
Public Class Form1
    Dim Dirs As String()
    Dim files As String()
    Dim cdir As String
    Private Sub Search(ByVal fold As String, ByVal mask As String)
        Try
            files = System.IO.Directory.GetFiles(fold, mask)
            Me.ListBox1.Items.AddRange(files)
            Dirs = System.IO.Directory.GetDirectories(fold, "*", IO.SearchOption.TopDirectoryOnly)
        Catch ex As Exception
        End Try
        If Not Dirs Is Nothing Then
            For Each cdir In Dirs
                Me.Search(cdir, mask)
            Next
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Search("C:\", "*.png")
    End Sub
End Class
Во время его работы форма зависает. Как бы его переделать с потоком или BackgroundWorker? Сам пробовал - не получилось.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2014, 19:34
Ответы с готовыми решениями:

Разложить файлы в папке по подпапкам соответственно расширениям файлов
Разложить содержимое папки, имя которой передается в качестве параметра командного файла, по...

Распределение файлов в папках по подпапкам с именами, соответствующими именам этих файлов
Распределение файлов в папках по подпапкам с названием подпапок как файл. например в папке 0005...

Распределение файлов в папках по подпапкам с именами, соответствующими части имен этих файлов
Есть много пдф файлов с адресами в названии ул. Комсомольская, д. 10 (1 ввод) ул....

Как найти названия файлов в текстовом файле, а потом осуществить поиск в папке файлов по этим именам?
Здравствуйте. Подскажите, пожалуйста. У меня есть текстовый файл, где находятся имена файлов и...

6
140 / 98 / 20
Регистрация: 11.03.2013
Сообщений: 147
06.02.2014, 01:30 2
Лучший ответ Сообщение было отмечено Никита12345 как решение

Решение

чуток переделал под потоки:

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Imports System.Threading
Public Class Form1
    Public Class Param
        Private _Fold As String
        Private _Mask As String
 
        Public Property Fold As String
            Get
                Return _Fold
            End Get
            Set(value As String)
                _Fold = value.ToString
            End Set
        End Property
 
        Public Property Mask As String
            Get
                Return _Mask
            End Get
            Set(value As String)
                _Mask = value.ToString
            End Set
        End Property
    End Class
 
    Private Delegate Sub Add_Range(ByVal T As String)
 
    Private Sub Write_2_lst(ByVal T As String)
        If Not (InvokeRequired) Then
            ListBox1.Items.Add(T)
        Else
            Invoke(New Add_Range(AddressOf Write_2_lst), T)
        End If
    End Sub
 
    Private Sub Search(p As Param)
 
        Dim Dirs() As String
        Dim files() As String
 
        Try
            files = System.IO.Directory.GetFiles(p.Fold, p.Mask)
            For i = 0 To files.Length - 1
                Write_2_lst(files(i))
            Next
        Catch
        End Try
        Try
            Dirs = System.IO.Directory.GetDirectories(p.Fold, "*", IO.SearchOption.TopDirectoryOnly)
            If Not Dirs Is Nothing Then
                For Each cdir In Dirs
 
                    Dim p1 As New Param
 
                    p1.Fold = cdir
                    p1.Mask = p.Mask
                    Search(p1)
 
                Next
            End If
        Catch
        End Try
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim p As New Param
        p.Fold = "C:\"
        p.Mask = "*.png"
        Dim th As New Thread(AddressOf Search)
        th.Start(p)
    End Sub
 
End Class
если есть вопросы - ответы тут
4
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
07.08.2016, 16:10 3
KolunyaZ
Как остановить поиск или по завершению поиска выскакивало сообщение (поиск завершен)?
И подсчитать строки в ListBox1?

А то уже пол дня мучаюсь
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,031
07.08.2016, 16:26 4
ставьте в теле цикла маркер(переменную) и проверяйте ее на каждый проход цикла...

а по поводу вывода сообщения - по окончании цикла выводите MsgBox
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
07.08.2016, 16:35 5
Цитата Сообщение от Yury Komar Посмотреть сообщение
MsgBox
О про MsgBox забыл я. Спасибо

Цитата Сообщение от Yury Komar Посмотреть сообщение
ставьте в теле цикла маркер
Как я не разу с этим не работал?
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,031
07.08.2016, 16:42 6
17Vasya17, вы забыли про MsgBox? Тогда как же мне вам объяснить то, как остановить цикл, прекратить поиск и выйти из потока? Будет ооочень тяжело.

Добавлено через 1 минуту
а вообще у вас аж три вопроса, не относящиеся к данной теме. Давайте не будем тут раздувать партянку и вы создадите отдельные темы на каждый ваш вопрос?
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
07.08.2016, 17:07 7
Yury Komar
Извиняюсь. Заработался

Темы создам тогда
1
07.08.2016, 17:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2016, 17:07
Помогаю со студенческими работами здесь

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

Поиск файлов в папке
День добрый ребят, возникла проблемка, нужно найти файлы в папке, файлы имеют такой вот вид ...

Поиск файлов в папке
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { string files =...

Поиск файлов в папке
Добрый день, программа должна добавить файл в папку с номерным знаком (пример: 001,002,003…00n;) ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru