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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
|
Option Compare Text
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
''' <summary>
''' Mit dieser Klasse können Sie auf einem lokalen Computer nach Dateien suchen.
''' Dazu stehen Ihnen eine Vielzahl an Filtern mit der man die Suche präzise an seine Bedürfnisse anpassen kann.
''' </summary>
''' <remarks>
''' Sie können diese Klasse frei verwenden auch in kommerziellen Programmen.
''' Ich bitte Sie lediglich um einen Hinweis über diese Klasse und dem Autor in Ihrem Programm (z.B. Info-Dialog)
''' Kontakt: khartak@freenet.de
''' Copyright © 2006 Tim Hartwig
''' </remarks>
Public Class FileSearch
Private FolderSize As Long = 0
Private ErrorLog As New System.Text.StringBuilder
Private CRC32Table() As Integer
Private AbortProgress As Boolean
Private mRaiseErrors As Boolean
#Region "Properties"
''' <summary>
''' Gibt an ob das Event für Fehlermeldungen bei einem Fehler aufgerufen werden soll.
''' In den meisten fällen tritt ein Fehler auf wenn versucht wird z.B.
''' den Ordner "System Volume Information" zu öffnen etc.
''' </summary>
Public Property RaiseErrors() As Boolean
Get
RaiseErrors = mRaiseErrors
End Get
Set(ByVal Value As Boolean)
mRaiseErrors = Value
End Set
End Property
#End Region
#Region "Events"
''' <summary>
''' Wird aufgerufen wenn eine Datei gültige gefunden wurde.
''' </summary>
''' <param name="FileName">Der Dateiname mit kompletten Pfad</param>
Public Event MatchFound(ByVal sender As Object, ByVal FileName As String)
''' <summary>
''' Wird aufgerufen wenn ein Fehler auftritt z.B. ein verweigerter Zugriff auf einen Ordner etc.
''' </summary>
''' <param name="ErrorMessage">Die Fehlernachricht</param>
Public Event RaiseError(ByVal sender As Object, ByVal ErrorMessage As String)
''' <summary>
''' Wird aufgerufen wenn der Suchvorgang vollständig ist
''' </summary>
''' <remarks></remarks>
Public Event SearchComplete(ByVal sender As Object)
#End Region
#Region "Public Methods"
#Region "[Search] = SUCHFUNKTION -> Dateisuche mit Filter"
''' <summary>
''' Diese Funktion sucht nach bestimmten Dateien
''' </summary>
''' <param name="Root">Der Ordner in dem gesucht werden soll</param>
''' <param name="SearchWord">Ein Optionales Suchwort</param>
''' <param name="Filter">Der Filter für die Suche</param>
''' <param name="FileArray">Das Array in der die gefundenen Dateien und/oder Ordner kommen</param>
Public Sub Search(ByVal Root As String, ByVal SearchWord As String, ByVal Filter As SearchFilter, ByRef FileArray As List(Of String))
ErrorLog.Remove(0, ErrorLog.Length)
AbortProgress = False
DoSearch(Root, SearchWord, Filter, FileArray)
AbortProgress = False
RaiseEvent SearchComplete(Me)
End Sub
Private Sub DoSearch(ByVal Root As String, ByVal SearchWord As String, ByVal Filter As SearchFilter, ByRef FileArray As List(Of String))
Try
If AbortProgress = True Then Exit Sub
My.Application.DoEvents()
Dim Files() As String = System.IO.Directory.GetFiles(Root)
Dim Folders() As String = System.IO.Directory.GetDirectories(Root)
Dim Recurse As Boolean = True
If Filter.Listing = SearchFilter.LO.BOTH Or Filter.Listing = SearchFilter.LO.FILES_ONLY Then
For i As Integer = 0 To UBound(Files)
If FileFilter(Files(i).ToString, SearchWord, Filter) = True Then
FileArray.Add(Files(i).ToString)
RaiseEvent MatchFound(Me, Files(i))
End If
Next
End If
For i As Integer = 0 To UBound(Folders)
'Es wird schon hier geprüft ob der Ordner erlaubt ist, denn wenn der Filter
'auf(FILES_ONLY) gestellt ist, wird der ausgeschlossene Ordner trotzdem geöffnet
If AllowedFolder(Folders(i), Filter.ExcludeFolders) = False Then Recurse = False
If Filter.Listing = SearchFilter.LO.BOTH Or Filter.Listing = SearchFilter.LO.FOLDERS_ONLY Then
If Recurse = True Then
FileArray.Add(Folders(i).ToString)
RaiseEvent MatchFound(Me, Folders(i))
End If
End If
If Recurse = True And Filter.NoSubFolders = False Then DoSearch(Folders(i), SearchWord, Filter, FileArray)
Recurse = True
Next
Catch Ex As Exception
'Hier werden die Fehler aufgefangen und in einem String geschrieben
If mRaiseErrors = True Then
ErrorLog.Append(Ex.Message & vbNewLine)
RaiseEvent RaiseError(Me, Ex.Message)
End If
End Try
End Sub
#End Region
#Region "[ListAll] = AUFLISTUNGSFUNKTION -> Auflistung von Dateien und Ordnern"
''' <summary>
''' Diese Funktion listet alle Dateien und/oder Ordner inklusive Unterordner auf und speichert diese in einem Array
''' </summary>
''' <param name="Root">Der Ordner in dem gesucht werden soll</param>
''' <param name="FileArray">Ein 0-basiertes Array in welchem die Suchergebnisse gespeichert werden sollen</param>
''' <param name="FFBFilter">Angabe ob nur alle Dateien oder nur alle Ordner oder beides aufgelistet werden soll</param>
Public Sub ListAll(ByVal Root As String, ByRef FileArray As List(Of String), Optional ByVal FFBFilter As SearchFilter.LO = SearchFilter.LO.BOTH)
ErrorLog.Remove(0, ErrorLog.Length)
AbortProgress = False
DoListAll(Root, FileArray, FFBFilter)
AbortProgress = False
RaiseEvent SearchComplete(Me)
End Sub
Private Sub DoListAll(ByVal Root As String, ByRef FileArray As List(Of String), Optional ByVal ListingOption As SearchFilter.LO = SearchFilter.LO.BOTH)
Try
If AbortProgress = True Then Exit Sub
My.Application.DoEvents()
Dim Files() As String = System.IO.Directory.GetFiles(Root)
Dim Folders() As String = System.IO.Directory.GetDirectories(Root)
If ListingOption = SearchFilter.LO.BOTH Or ListingOption = SearchFilter.LO.FILES_ONLY Then
For i As Integer = 0 To UBound(Files)
FileArray.Add(Files(i).ToString)
RaiseEvent MatchFound(Me, Files(i))
Next
End If
For i As Integer = 0 To UBound(Folders)
If ListingOption = SearchFilter.LO.BOTH Or ListingOption = SearchFilter.LO.FOLDERS_ONLY Then
FileArray.Add(Folders(i).ToString)
RaiseEvent MatchFound(Me, Folders(i))
End If
DoListAll(Folders(i), FileArray, ListingOption)
Next
Catch Ex As Exception
If mRaiseErrors = True Then
ErrorLog.Append(Ex.Message & vbNewLine)
RaiseEvent RaiseError(Me, Ex.Message)
End If
End Try
End Sub
#End Region
#Region "[GetFolderSize] = Ordnergröße ermitteln"
''' <summary>
''' Diese Funktion berechnet die Größe eines Ordners
''' </summary>
''' <param name="Root">Der Ordner wessen größe berechnet werden soll</param>
''' <param name="SizeFormat">Angabe in welchem Format die Gesamtgröße zurückgegeben werden soll: GB,MB,KB,B</param>
Public Function GetFolderSize(ByVal Root As String, ByVal SizeFormat As SearchFilter.ST) As Long
Dim TmpSize As Long = 0
FolderSize = 0
ErrorLog.Remove(0, ErrorLog.Length)
DoGetFolderSize(Root, SizeFormat)
Select Case SizeFormat
Case SearchFilter.ST.BYTES : FolderSize /= 1
Case SearchFilter.ST.KILO_BYTES : FolderSize /= 1024
Case SearchFilter.ST.MEGA_BYTES : FolderSize /= 1048576
Case SearchFilter.ST.GIGA_BYTES : FolderSize /= 1073741824
End Select
Return FolderSize
End Function
Private Function DoGetFolderSize(ByVal Root As String, ByVal SizeFormat As SearchFilter.ST) As Long
Try
Dim Files() As String = System.IO.Directory.GetFiles(Root)
Dim Folders() As String = System.IO.Directory.GetDirectories(Root)
For i As Integer = 0 To UBound(Files)
FolderSize += FileLen(Files(i))
Next
For i As Integer = 0 To UBound(Folders)
DoGetFolderSize(Folders(i), SizeFormat)
Next
Catch Ex As Exception
ErrorLog.Append(Ex.Message & vbNewLine)
RaiseEvent RaiseError(Me, Ex.Message)
End Try
End Function
#End Region
''' <summary>
''' Bricht den Suchvorgang ab
''' </summary>
''' <remarks></remarks>
Public Sub Abort()
AbortProgress = True
End Sub
''' <summary>
''' Diese Funktion gibt alle bei der Suche aufgetretenen Fehlermeldungen zurück
''' </summary>
Public Function GetErrorLog() As String
Return ErrorLog.ToString
End Function
''' <summary>
''' Diese Funktion berechnet den CRC32 Hash einer Datei
''' </summary>
Public Function GetCRC32(ByVal FileName As String) As String
Dim FS As FileStream = New FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
Dim CRC32Result As Integer = &HFFFFFFFF
Dim Buffer(4096) As Byte
Dim ReadSize As Integer = 4096
Dim Count As Integer = FS.Read(Buffer, 0, ReadSize)
Dim i As Integer, iLookup As Integer
If CRC32Table.Length = 0 Then
'CRC32 Tabelle erstellen
CreateCRC32Table()
End If
Do While (Count > 0)
For i = 0 To Count - 1
iLookup = (CRC32Result And &HFF) Xor Buffer(i)
CRC32Result = ((CRC32Result And &HFFFFFF00) \ &H100) And &HFFFFFF
CRC32Result = CRC32Result Xor CRC32Table(iLookup)
Next i
Count = FS.Read(Buffer, 0, ReadSize)
Loop
Return Hex(Not (CRC32Result))
End Function
''' <summary>
''' Diese Funktion berechnet den MD5 Hash einer Datei
''' </summary>
Public Function GetMD5(ByVal File As String) As String
Dim FN As New FileStream(File, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
Dim HashValue(0) As Byte
Dim Result As String = ""
Dim Tmp As String = ""
Dim MD5 As New MD5CryptoServiceProvider
MD5.ComputeHash(FN)
HashValue = MD5.Hash
FN.Close()
For i As Integer = 0 To HashValue.Length - 1
Tmp = Hex(HashValue(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Result += Tmp
Next
Return Result
End Function
''' <summary>
''' Diese Funktion berechnet den SHA1 Hash einer Datei
''' </summary>
Public Function GetSHA(ByVal File As String) As String
Dim FN As New FileStream(File, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
Dim HashValue(0) As Byte
Dim Result As String = ""
Dim Tmp As String = ""
Dim SHA1 As New SHA1CryptoServiceProvider
SHA1.ComputeHash(FN)
HashValue = SHA1.Hash
FN.Close()
For i As Integer = 0 To HashValue.Length - 1
Tmp = Hex(HashValue(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Result += Tmp
Next
Return Result
End Function
#End Region
#Region "Private Methods"
Private Function FileFilter(ByVal FileName As String, ByVal SearchWord As String, ByVal Filter As SearchFilter) As Boolean
'Fastest First Slowest Last!
Dim IsFileValid As Boolean = True
Dim Extensions() As String
Dim FileArray() As String
If AbortProgress = True Then Exit Function
'Wenn eine Suchwort angegeben wurde dann wird geguckt ob es sich überhaupt in der Datei
'befindet, falls nicht wird direkt abgebrochen um nicht unnötig die Filter zu durchlaufen
If SearchWord <> "" Then
If InStr(FileName, SearchWord) = 0 Then Exit Function
End If
'ExcludeFiles
If IsFileValid Then
If Filter.ExcludeFiles <> "" Then
FileArray = Split(Filter.ExcludeFiles, ",")
For i As Integer = 0 To UBound(FileArray)
If InStr(FileArray(i), "\") > 0 Then
If FileArray(i) = FileName Then
IsFileValid = False
Exit For
End If
Else
If Path.GetFileName(FileArray(i)) = Path.GetFileName(FileName) Then
IsFileValid = False
Exit For
End If
End If
Next
End If
End If
'ExcludeFileTypes
If IsFileValid Then
If Filter.ExcludeFileTypes <> "" Then
Extensions = Split(Filter.ExcludeFileTypes, ",")
For i As Integer = 0 To UBound(Extensions)
If LCase(Extensions(i)) = LCase(GetFileExt(FileName)) Then
IsFileValid = False
Exit For
End If
Next
End If
End If
'FileTypes
If IsFileValid Then
If Filter.FileTypes <> "" Then
IsFileValid = False
Extensions = Split(Filter.FileTypes, ",")
For i As Integer = 0 To UBound(Extensions)
If LCase(Extensions(i)) = LCase(GetFileExt(FileName)) Then
IsFileValid = True
Exit For
End If
Next
End If
End If
'WordComparing
If IsFileValid Then
Select Case Filter.WordComparing
Case SearchFilter.CO.NORMAL
If Path.GetFileName(FileName) <> SearchWord Then IsFileValid = False
Case SearchFilter.CO.CASESENSITIVE
If Path.GetFileName(FileName).CompareTo(SearchWord) <> 0 Then IsFileValid = False
End Select
End If
'MaxSize
If IsFileValid Then
If Filter.MaxSize > 0 Then
Select Case Filter.SizeType
Case SearchFilter.ST.BYTES
If FileLen(FileName) > Filter.MaxSize Then IsFileValid = False
Case SearchFilter.ST.KILO_BYTES
If FileLen(FileName) \ 1024 > Filter.MaxSize Then IsFileValid = False
Case SearchFilter.ST.MEGA_BYTES
If FileLen(FileName) \ 1048576 > Filter.MaxSize Then IsFileValid = False
Case SearchFilter.ST.GIGA_BYTES
If FileLen(FileName) \ 1073741824 > Filter.MaxSize Then IsFileValid = False
End Select
End If
End If
'MinSize
If IsFileValid Then
If Filter.MinSize > 0 Then
Select Case Filter.SizeType
Case SearchFilter.ST.BYTES
If FileLen(FileName) < Filter.MinSize Then IsFileValid = False
Case SearchFilter.ST.KILO_BYTES
If FileLen(FileName) \ 1024 < Filter.MinSize Then IsFileValid = False
Case SearchFilter.ST.MEGA_BYTES
If FileLen(FileName) \ 1048576 < Filter.MinSize Then IsFileValid = False
Case SearchFilter.ST.GIGA_BYTES
If FileLen(FileName) \ 1073741824 < Filter.MinSize Then IsFileValid = False
End Select
End If
End If
'MaxDate
If IsFileValid Then
If Filter.MaxDate <> Nothing Then
Select Case Filter.DateType
Case SearchFilter.DT.CREATE_TIME
If System.IO.File.GetCreationTime(FileName) > Filter.MaxDate Then IsFileValid = False
Case SearchFilter.DT.LAST_ACCESS_TIME
If System.IO.File.GetLastAccessTime(FileName) > Filter.MaxDate Then IsFileValid = False
Case SearchFilter.DT.LAST_WRITE_TIME
If System.IO.File.GetLastWriteTime(FileName) > Filter.MaxDate Then IsFileValid = False
End Select
End If
End If
'MinDate
If IsFileValid Then
If Filter.MinDate <> Nothing Then
Select Case Filter.DateType
Case SearchFilter.DT.CREATE_TIME
If System.IO.File.GetCreationTime(FileName) < Filter.MinDate Then IsFileValid = False
Case SearchFilter.DT.LAST_ACCESS_TIME
If System.IO.File.GetLastAccessTime(FileName) < Filter.MinDate Then IsFileValid = False
Case SearchFilter.DT.LAST_WRITE_TIME
If System.IO.File.GetLastWriteTime(FileName) < Filter.MinDate Then IsFileValid = False
End Select
End If
End If
'MD5
If IsFileValid Then
If Filter.MD5Hash <> "" Then
If UCase(Filter.MD5Hash) <> UCase(GetMD5(FileName)) Then IsFileValid = False
End If
End If
'SHA1
If IsFileValid Then
If Filter.SHAHash <> "" Then
If UCase(Filter.SHAHash) <> UCase(GetSHA(FileName)) Then IsFileValid = False
End If
End If
'CRC32
If IsFileValid Then
If Filter.CRCHash <> "" Then
If UCase(Filter.CRCHash) <> UCase(GetCRC32(FileName)) Then IsFileValid = False
End If
End If
Return IsFileValid
End Function
Private Function AllowedFolder(ByVal CurrentFolder As String, ByVal ExcludeFolders As String) As Boolean
Dim ExcludeArr() As String
AllowedFolder = True
If ExcludeFolders = "" Then Exit Function
ExcludeArr = Split(ExcludeFolders, ",")
For i As Integer = 0 To UBound(ExcludeArr)
If InStr(ExcludeArr(i), "\") > 0 Then
'Wenn ein Ordner mit Pfad angegeben wurde
If InStr(CurrentFolder, ExcludeArr(i)) > 0 Then
AllowedFolder = False
Exit For
End If
Else
'Wenn ein Ordner ohne Pfad angegeben wurde (nur Name)
If Path.GetFileName(CurrentFolder) = ExcludeArr(i) Then
AllowedFolder = False
Exit For
End If
End If
Next
End Function
Private Sub CreateCRC32Table()
Dim DWPolynomial As Integer = &HEDB88320
Dim DWCRC As Integer
Dim i As Integer, j As Integer
ReDim CRC32Table(256)
For i = 0 To 255
DWCRC = i
For j = 8 To 1 Step -1
If (DWCRC And 1) Then
DWCRC = ((DWCRC And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
DWCRC = DWCRC Xor DWPolynomial
Else
DWCRC = ((DWCRC And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
End If
Next j
CRC32Table(i) = DWCRC
Next i
End Sub
Private Function GetFileExt(ByVal File As String) As String
If File.EndsWith("\") Then File = File.Substring(0, File.Length - 1)
Return LCase(Mid(File, InStrRev(File, ".") + 1))
End Function
#End Region
<Serializable()> _
Public Class SearchFilter
Private mListing As LO
Private mFileTypes As String
Private mWordComparing As CO
Private mExcludeFolders As String
Private mExcludeFiles As String
Private mExcludeFileTypes As String
Private mMaxSize As Long
Private mMinSize As Long
Private mSizeType As ST
Private mMaxDate As Date
Private mMinDate As Date
Private mDateType As DT
Private mCRCHash As String
Private mMD5Hash As String
Private mSHAHash As String
Private mNoSubFolders As Boolean
Public Enum LO As Integer 'ListingOptions
''' <summary>Ordner und Dateien auflisten</summary>
BOTH = 0
''' <summary>Nur Dateien auflisten</summary>
FILES_ONLY = 1
''' <summary>Nur Ordner auflisten</summary>
FOLDERS_ONLY = 2
End Enum
Public Enum DT As Integer 'DateType
''' <summary>Das Erstellungsdatum der Datei zum vergleichen benutzen</summary>
CREATE_TIME = 0
''' <summary>Das Zugriffsdatum der Datei zum vergleichen benutzen</summary>
LAST_ACCESS_TIME = 1
''' <summary>Das Änderungsdatum der Datei zum vergleichen benutzen</summary>
LAST_WRITE_TIME = 2
End Enum
Public Enum ST As Integer 'SizeType
''' <summary>Auf Byte-Ebene vergleichen (FileSize/1)</summary>
BYTES = 0
''' <summary>Auf KiloByte-Ebene vergleichen (FileSize/1024)</summary>
KILO_BYTES = 1
''' <summary>Auf MegaByte-Ebene vergleichen (FileSize/1048576)</summary>
MEGA_BYTES = 2
''' <summary>Auf GigaByte-Ebene vergleichen (FileSize/1073741824)</summary>
GIGA_BYTES = 3
End Enum
Public Enum CO As Integer 'CompareOption
''' <summary>Das Suchwort wird nicht mit dem Dateinamen verglichen</summary>
NONE = 0
''' <summary>Das Suchwort wird normal mit dem Dateinamen verglichen</summary>
NORMAL = 1
''' <summary>Das Suchwort wird exakt mit dem Dateinamen verglichen</summary>
CASESENSITIVE = 2
End Enum
''' <summary>
''' Legt fest ob nur Dateien, nur Ordner oder beides aufgelistet werden soll.
''' </summary>
Public Property Listing() As LO
Get
Return mListing
End Get
Set(ByVal value As LO)
mListing = value
End Set
End Property
''' <summary>
''' Legt die Dateitypen fest die gesucht werden sollen z.B. exe,txt,bmp etc.
''' Mehrere Extensionen müssen mit einem Komma getrennt und ohne Punkt und Sternchen angegeben werden.
''' </summary>
Public Property FileTypes() As String
Get
Return mFileTypes
End Get
Set(ByVal value As String)
mFileTypes = value
End Set
End Property
''' <summary>
''' Legt fest wie die Dateien mit dem Suchwort verglichen werden sollen.
''' Entweder garnicht, einfacher Textvergleich oder exakter Textvergleich (Case Sensitive).
''' </summary>
Public Property WordComparing() As CO
Get
Return mWordComparing
End Get
Set(ByVal value As CO)
mWordComparing = value
End Set
End Property
''' <summary>
''' Gibt an welche Ordner von der Suche ausgeschlossen werden sollen.
''' Man kann entweder einen bestimmten Ordner mit Pfad angeben oder einen Ordnernamen.
''' Mehrere Ordner müssen mit einem Komma getrennt werden.
''' </summary>
Public Property ExcludeFolders() As String
Get
Return mExcludeFolders
End Get
Set(ByVal value As String)
mExcludeFolders = value
End Set
End Property
''' <summary>
''' Gibt an welche Dateien von der Suche ausgeschlossen werden sollen.
''' Man kann entweder eine bestimmte Datei mit Pfad angeben oder einen Dateinamen.
''' Mehrere Dateien müssen mit einem Komma getrennt werden
''' </summary>
Public Property ExcludeFiles() As String
Get
Return mExcludeFiles
End Get
Set(ByVal value As String)
mExcludeFiles = value
End Set
End Property
''' <summary>
''' Legt fest nach welchen Dateitypen nicht gesucht werden soll z.B. exe,txt,bmp...
''' Mehrere Extensionen müssen mit einem Komma getrennt und ohne Punkt und Sternchen angegeben werden.
''' </summary>
Public Property ExcludeFileTypes() As String
Get
Return mExcludeFileTypes
End Get
Set(ByVal value As String)
mExcludeFileTypes = value
End Set
End Property
''' <summary>
''' Legt die Maximale größe der zu suchenden Dateien fest.
''' Es werden keine Dateien aufgelistet die größer sind als hier angegeben.
''' Man kann die größe in B,KB,MB und GB angeben.
''' Das kann man in der Eigenschaft SizeType festlegen.
''' </summary>
Public Property MaxSize() As Long
Get
Return mMaxSize
End Get
Set(ByVal value As Long)
mMaxSize = value
End Set
End Property
''' <summary>
''' Legt die Minimale größe der zu suchenden Dateien fest.
''' Es werden keine Dateien aufgelistet die kleiner sind als hier angegeben.
''' Man kann die größe in B,KB,MB und GB angeben.
''' Das kann man in der Eigenschaft SizeType festlegen.
''' </summary>
Public Property MinSize() As Long
Get
Return mMinSize
End Get
Set(ByVal value As Long)
mMinSize = value
End Set
End Property
''' <summary>
''' Legt den Größentyp für die Eigenschaften MaxSize und MinSize fest.
''' </summary>
Public Property SizeType() As ST
Get
Return mSizeType
End Get
Set(ByVal value As ST)
mSizeType = value
End Set
End Property
''' <summary>
''' Legt das maximale Datum der zu suchenden Dateien fest.
''' Es werden keine Dateien aufgelistet die neuer sind als hier angegeben.
''' Welches Datum man vergleichen will (Zugriffdatum, Erstellungsdatum oder Änderungsdatum)
''' kann man in der Eigenschaft DateType festlegen.
''' </summary>
Public Property MaxDate() As Date
Get
Return mMaxDate
End Get
Set(ByVal value As Date)
mMaxDate = value
End Set
End Property
''' <summary>
''' Legt das minimale Datum der zu suchenden Dateien fest.
''' Es werden keine Dateien aufgelistet die älter sind als hier angegeben.
''' Welches Datum man vergleichen will (Zugriffdatum, Erstellungsdatum oder Änderungsdatum)
''' kann man in der Eigenschaft DateType festlegen.
''' </summary>
Public Property MinDate() As Date
Get
Return mMinDate
End Get
Set(ByVal value As Date)
mMinDate = value
End Set
End Property
''' <summary>
''' Legt für die Eigenschaften MinDate und MaxDate fest welches Datum der Dateien verglichen werden soll.
''' </summary>
Public Property DateType() As DT
Get
Return mDateType
End Get
Set(ByVal value As DT)
mDateType = value
End Set
End Property
''' <summary>
''' Legt einen CRC32 Hash fest.
''' Wenn man einen CRC32 Hash festlegt werden nur die Dateien aufgelistet die diesen Hash haben.
''' </summary>
Public Property CRCHash() As String
Get
Return mCRCHash
End Get
Set(ByVal value As String)
mCRCHash = value
End Set
End Property
''' <summary>
''' Legt einen MD5 Hash fest.
''' Wenn man einen MD5 Hash festlegt werden nur die Dateien aufgelistet die diesen Hash haben.
''' </summary>
Public Property MD5Hash() As String
Get
Return mMD5Hash
End Get
Set(ByVal value As String)
mMD5Hash = value
End Set
End Property
''' <summary>
''' Legt einen SHA1 Hash fest.
''' Wenn man einen SHA1 Hash festlegt werden nur die Dateien aufgelistet die diesen Hash haben.
''' </summary>
Public Property SHAHash() As String
Get
Return mSHAHash
End Get
Set(ByVal value As String)
mSHAHash = value
End Set
End Property
''' <summary>
''' Legt fest ob Unterordner von der Suche ausgeschlossen werden sollen.
''' </summary>
Public Property NoSubFolders() As Boolean
Get
Return mNoSubFolders
End Get
Set(ByVal value As Boolean)
mNoSubFolders = value
End Set
End Property
End Class
End Class
|