Поиск в папке и подпапках файлов, созданных или измененных за определенную дату - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Есть папка(D:\wscom). В ней лежат файлы, папки, подпапки. на форме текстовое поле(для ввода даты за которую необходимо осуществить поиск), ListView (для вывода полного пути к файлу с его именем в первом столбце и датой и временем создания/изменения во втором) и Кнопка(по которой запускается поиск файлов) Необходимо осуществить поиск файлов созданных/измененных) за определенную дату в папке с файлами и подкаталогами. Возможно ли еще сделать таймер поиска и ProgressBar и в Label отображать имя и путь файла, который просматривается в данный момент? (по возможности) Заранее спасибо за помощь.

Решение задачи: «Поиск в папке и подпапках файлов, созданных или измененных за определенную дату»

textual
Листинг программы
  1.  Dim files() As String
  2.     Dim path As String = "D:\Base"
  3.     Dim cel_date As String = ""
  4.  
  5.     Private Sub Search(e As System.ComponentModel.DoWorkEventArgs, ByVal fold As String, ByVal mask As String, ByVal Recur As Boolean)
  6.         Dim stack As Stack(Of String) = New Stack(Of String)
  7.         stack.Push(fold)
  8.         Do 'Цикл начинается
  9.             If BackgroundWorker1.CancellationPending Then 'Если нажимаем кнопку отмены ТО-
  10.                 e.Cancel = True 'Возвращаем значение для отмены события "BackgroundWorker1" которое проверяется в "BackgroundWorker1_RunWorkerCompleted"
  11.                 Exit Sub
  12.             End If
  13.             fold = stack.Pop() 'Если мы не ищем файлы в подпапках то в "stack" будет одна запись и цикл закончится быстро
  14.             Try
  15.                 files = System.IO.Directory.GetFiles(fold, mask)
  16.  
  17.                 Dim last_write As String = ""
  18.  
  19.                 For i = 0 To files.Count - 1
  20.                     last_write = IO.File.GetLastWriteTime(files(i))
  21.                     If last_write.Contains(cel_date) Then
  22.                         ListView1.Items.Add(files(i)).SubItems.Add(last_write)
  23.                     End If
  24.                 Next
  25.  
  26.                 Label1.Text = ListView1.Items.Count 'отображает кол-во найденных файлов
  27.  
  28.                 If Recur Then 'Если необходимо сканировать подпапки
  29.                     For Each folder In IO.Directory.GetDirectories(fold)
  30.                         stack.Push(folder)
  31.                     Next
  32.                 End If
  33.  
  34.             Catch ex As Exception
  35.             End Try
  36.  
  37.         Loop Until stack.Count = 0
  38.     End Sub
  39.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  40.         ListView1.Items.Clear()
  41.         cel_date = Split(DateTimePicker1.Value, " ")(0)
  42.  
  43.         If BackgroundWorker1.IsBusy = False Then
  44.             ProgressBar1.Visible = True
  45.             BackgroundWorker1.RunWorkerAsync()
  46.         End If
  47.     End Sub
  48.  
  49.     Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  50.         Search(e, path, "*.*", True)
  51.     End Sub
  52.  
  53.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  54.         Label1.Text = 0
  55.         CheckForIllegalCrossThreadCalls = False
  56.         ProgressBar1.Visible = False
  57.         ProgressBar1.Style = ProgressBarStyle.Marquee
  58.         ListView1.View = View.Details
  59.         ListView1.GridLines = True
  60.         ListView1.Columns.Add("Имя файла", 140, HorizontalAlignment.Left)
  61.         ListView1.Columns.Add("Дата изменеия", 242, HorizontalAlignment.Left)
  62.         ListView1.FullRowSelect = True
  63.     End Sub
  64.  
  65.     Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
  66.         ProgressBar1.Visible = False
  67.     End Sub

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


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

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

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы