Moin! Ich möchte gerne mit GetFiles, mehre Dateitypen suchen.
Leider habe ich noch nicht rausgefunden, wie dies möglich ist!
Kann mir jemand bitte helfen?
BIG THX
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter(der ist verfügbar). Programmierfragen über PN / Konversation werden ignoriert!
Falls du .Net 4.0 oder grösser verwendest, kannst du folgende Funktion verwenden.
VB.NET-Quellcode
PublicSharedFunction GetFiles(path AsString, searchPatterns AsString(), Optional searchOption As IO.SearchOption = IO.SearchOption.TopDirectoryOnly) As IEnumerable(OfString)
Ich habe nun diesen Code geschrieben.
Wie kann ich diesen noch verbessern?
Vielen Dank!
(alter code entfernt...)
edit: @NoIde
Super!
Daran habe ich gerade gar nicht gedacht.
In Zukunft merke ich mir dies.
Den der Code wird so viel leichter zu lesen, und viel kürzer!
Vielen Dank!
Visual Basic.NET
MS-SQL
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cheffboss“ ()
So ist das deutlich kürzer.
VB.NET-Quellcode
Dim extensions() AsString= {"*.jpg", "*.jpeg", "*.bmp", "*.emf", "*.gif", "*.tif", "*.png"}
Dim searchPath AsString=""
ForEach extension In extensions
ForEach file In Directory.GetFiles(searchPath , extension, SearchOption.AllDirectories)
Next
Next
Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
„Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“ Benjamin Franklin
Was ist schneller?
7 mal GetFiles aufrufen für 7 verschiedene Extensions
oder
1 mal GetFiles aufrufen für *.* und danach alle Files prüfen, ob sie in die WhiteList eingetragen werden sollen?
Ich denke, dass bei größeren Verzeichnis-Bäumen der zweite Weg schneller ist.
--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch --
@petaod Vielen Dank!
Ich habe gerade die beiden Varianten getestet.
Der Code der 7 mal die GetFiles aufruft, dauert 3ms.
Der Code der alle "*.*" aufruft, dauert nur 1ms.
Also ist dieser viel schneller!
Hier der Code:
VB.NET-Quellcode
PrivateSub Button1_Click(sender AsObject, e As EventArgs) Handles Button1.Click
Try
ForEach file In Directory.GetFiles(searchPath, "*.*", SearchOption.AllDirectories)
Try
If file.EndsWith(".jpg") Or file.EndsWith(".jpeg") _
Or file.EndsWith(".bmp") Or file.EndsWith(".emf") _
Or file.EndsWith(".gif") Or file.EndsWith(".tif") _
Or file.EndsWith(".png") Or file.EndsWith(".ico") Then
' Hier Einfügen!
Me.ListBox1.Items.Add(file)
EndIf
Catch
EndTry
Next
Catch
EndTry
EndSub
Visual Basic.NET
MS-SQL
Werf die File Endungen in ein Array und prüfe auf contains das ist einfacher zu warten