Поиск в папке и подпапках файлов, созданных или измененных за определенную дату - Visual Basic .NET
Формулировка задачи:
Есть папка(D:\wscom). В ней лежат файлы, папки, подпапки.
на форме текстовое поле(для ввода даты за которую необходимо осуществить поиск),
ListView (для вывода полного пути к файлу с его именем в первом столбце и датой и временем создания/изменения во втором)
и Кнопка(по которой запускается поиск файлов)
Необходимо осуществить поиск файлов созданных/измененных) за определенную дату в папке с файлами и подкаталогами.
Возможно ли еще сделать таймер поиска и ProgressBar и в Label отображать имя и путь файла, который просматривается в данный момент? (по возможности)
Заранее спасибо за помощь.
Решение задачи: «Поиск в папке и подпапках файлов, созданных или измененных за определенную дату»
textual
Листинг программы
Dim files() As String Dim path As String = "D:\Base" Dim cel_date As String = "" Private Sub Search(e As System.ComponentModel.DoWorkEventArgs, 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 'Цикл начинается If BackgroundWorker1.CancellationPending Then 'Если нажимаем кнопку отмены ТО- e.Cancel = True 'Возвращаем значение для отмены события "BackgroundWorker1" которое проверяется в "BackgroundWorker1_RunWorkerCompleted" Exit Sub End If fold = stack.Pop() 'Если мы не ищем файлы в подпапках то в "stack" будет одна запись и цикл закончится быстро Try files = System.IO.Directory.GetFiles(fold, mask) Dim last_write As String = "" For i = 0 To files.Count - 1 last_write = IO.File.GetLastWriteTime(files(i)) If last_write.Contains(cel_date) Then ListView1.Items.Add(files(i)).SubItems.Add(last_write) End If Next Label1.Text = ListView1.Items.Count 'отображает кол-во найденных файлов 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 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListView1.Items.Clear() cel_date = Split(DateTimePicker1.Value, " ")(0) If BackgroundWorker1.IsBusy = False Then ProgressBar1.Visible = True BackgroundWorker1.RunWorkerAsync() End If End Sub Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Search(e, path, "*.*", True) End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Label1.Text = 0 CheckForIllegalCrossThreadCalls = False ProgressBar1.Visible = False ProgressBar1.Style = ProgressBarStyle.Marquee ListView1.View = View.Details ListView1.GridLines = True ListView1.Columns.Add("Имя файла", 140, HorizontalAlignment.Left) ListView1.Columns.Add("Дата изменеия", 242, HorizontalAlignment.Left) ListView1.FullRowSelect = True End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted ProgressBar1.Visible = False End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д