Поиск в папке и подпапках файлов, созданных или измененных за определенную дату - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы