Imports System.IO
Public Class Form1
    ' File information
    Public Const
TOOL_DIR_NAMEONLY As Integer
= 0
    Public Const
TOOL_DIR_SIZE As Integer
= 1
    Public Const
TOOL_DIR_MODIFIED As Integer
= 2
    Public Const
TOOL_DIR_FULLPATH As Integer
= 4
    Public Const
TOOL_DIR_DIRECTORIES_ONLY As Integer = 8
    Public Const
TOOL_DIR_ALL As Integer
= 15
    ''' <summary>
    ''' Searches for files that match ány of the file masks in
the FileMask array
    ''' </summary>
    ''' <param
name="RootPath">Path to start
search from</param>
    ''' <param
name="FileMask">An array of
filemasks</param>
    ''' <param
name="FileNames">Returns matching
files</param>
    ''' <param
name="RecurseDirs">Recurse
subdirectories too</param>
    ''' <param
name="ExcludeRootPath">Strip
start path away from the file names</param>
    ''' <param
name="MinDate">Search files newer
than MinDate</param>
    ''' <param
name="MaxDate">Search files older
than MaxDate</param>
    ''' <param
name="MinSize">Search files
larger than MinSize</param>
    ''' <param
name="MaxSize">Search files
smaller than MaxSize</param>
    ''' <param
name="FileInfo">Optional
parameter which tells if some extra info should be returned with the filenames.
Use constant values above.</param>
    ''' <remarks></remarks>
    Public Sub ToolDir(ByVal RootPath As String, ByVal
FileMask() As String,
_
      ByRef FileNames() As String, _
      ByVal RecurseDirs As Boolean, _
      ByVal ExcludeRootPath As
Boolean, _
      ByVal MinDate As Date, ByVal MaxDate As Date, _
      ByVal MinSize As Integer, ByVal
MaxSize As Integer,
_
      Optional ByVal
FileInfo As Integer
= TOOL_DIR_NAMEONLY)
        '
        ' Return files
        '
        Dim DirInfo As DirectoryInfo
        Dim Files() As FileInfo
        Dim OneFile As FileInfo
        Dim TempDrive As String
        Dim TempPath As String
        Dim TempFile As String
        Dim TempExt As String
        Dim CheckMinDate As Boolean
        Dim CheckMaxDate As Boolean
        Dim CheckMinSize As Boolean
        Dim CheckMaxSize As Boolean
        Dim AcceptFile As Boolean
        Dim RootPathLength As
Integer
        Dim i As Integer
        Dim j As Integer
        Try
            If MinDate <> CDate("1.1.1970") Then
                CheckMinDate = True
            Else
               
CheckMinDate = False
            End If
            If MaxDate <> CDate("1.1.1970") Then
               
CheckMaxDate = True
            Else
               
CheckMaxDate = False
            End If
            If MinSize > 0 Then
               
CheckMinSize = True
            Else
               
CheckMinSize = False
            End If
            If MaxSize > 0 Then
               
CheckMaxSize = True
            Else
               
CheckMaxSize = False
            End If
            If FileMask.GetUpperBound(0) < 0 Then
               
ReDim FileMask(0)
               
FileMask(0) = "*.*"
            End If
            i
= 0
           
TempDrive = ""
           
TempPath = ""
           
TempFile = ""
           
TempExt = ""
           
RootPathLength = RootPath.Length + 1
            For j = 0 To
FileMask.GetUpperBound(0)
               
ReDim Files(0)
               
If RecurseDirs Then
                   
DirInfo = New DirectoryInfo(RootPath)
                   
Files = DirInfo.GetFiles(FileMask(j), IO.SearchOption.AllDirectories)
               
Else
                   
DirInfo = New DirectoryInfo(RootPath)
                   
Files = DirInfo.GetFiles(FileMask(j), IO.SearchOption.TopDirectoryOnly)
               
End If
               
For Each
OneFile In Files
                   
AcceptFile = True
                   
If CheckMinDate Then
                        If OneFile.LastAccessTime.Date.Subtract(MinDate).Days < 0 Then
                  
         AcceptFile = False
                        End If
                   
End If
                   
If CheckMaxDate Then
                        If OneFile.LastAccessTime.Date.Subtract(MaxDate).Days > 0 Then
                            AcceptFile = False
                        End If
                   
End If
                   
If CheckMinSize Then
                        If OneFile.Length < MinSize * 1024 Then
                            AcceptFile = False
                        End If
                    End If
                   
If CheckMaxSize Then
                        If OneFile.Length > MaxSize * 1024 Then
                            AcceptFile = False
                        End If
                   
End If
                   
If AcceptFile Then
                        ReDim Preserve FileNames(i)
                        If (FileInfo And
TOOL_DIR_FULLPATH) = TOOL_DIR_FULLPATH Then
                            If ExcludeRootPath Then
                                FileNames(i) =
OneFile.FullName.Substring( _
                                 
RootPathLength, OneFile.FullName.Length - RootPathLength)
                            Else
                                FileNames(i) =
OneFile.FullName
                            End If
                        Else
                            FileNames(i) =
OneFile.Name
                        End If
                        If (FileInfo And TOOL_DIR_SIZE) =
TOOL_DIR_SIZE Then
                            FileNames(i) =
FileNames(i) & Convert.ToChar(9) &
OneFile.Length
                        End If
                        If (FileInfo And
TOOL_DIR_MODIFIED) = TOOL_DIR_MODIFIED Then
                            FileNames(i) =
FileNames(i) & Convert.ToChar(9) &
OneFile.LastAccessTime
             
          End
If
                        i += 1
                   
End If
               
Next
            Next j
        Catch ex As Exception
            ' Some error
        End Try
    End Sub
    Private Sub
Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
        Dim FileNames(0) As String
        ' procura todos ospng-arquivos na C:\Temp pasta
       
ToolDir("C:\Temp\", New String() {"*.png"}, FileNames, True, False, CDate("1.1.1970"),
CDate("1.1.1970"),
0, 0)
        For Each fn As String In FileNames
            MessageBox.Show(fn)
        Next
    End Sub
End Class
 
 
0 comentários:
Postar um comentário