Dela via


LINQ- och filkataloger (Visual Basic)

Många filsystemåtgärder är i huvudsak frågor och passar därför bra för LINQ-metoden.

Observera att frågorna i det här avsnittet är icke-destruktiva. De används inte för att ändra innehållet i de ursprungliga filerna eller mapparna. Detta följer regeln att frågor inte ska orsaka några biverkningar. I allmänhet bör all kod (inklusive frågor som utför operatorer för att skapa/uppdatera/ta bort) som ändrar källdata hållas åtskilda från den kod som bara frågar efter data.

Det här avsnittet innehåller följande avsnitt:

Anvisningar: Fråga efter filer med ett angivet attribut eller namn (Visual Basic)
Visar hur du söker efter filer genom att undersöka en eller flera egenskaper för objektet FileInfo .

Anvisningar: Gruppera filer efter tillägg (LINQ) (Visual Basic)
Visar hur du returnerar objektgrupper FileInfo baserat på filnamnstillägget.

Anvisningar: Fråga efter totalt antal byte i en uppsättning mappar (LINQ) (Visual Basic)
Visar hur du returnerar det totala antalet byte i alla filer i ett angivet katalogträd.

Gör så här: Jämför innehållet i två mappar (LINQ) (Visual Basic)s
Visar hur du returnerar alla filer som finns i två angivna mappar och även alla filer som finns i en mapp men inte i den andra.

Anvisningar: Fråga efter den största filen eller filerna i ett katalogträd (LINQ) (Visual Basic)
Visar hur du returnerar den största eller minsta filen, eller ett angivet antal filer, i ett katalogträd.

Anvisningar: Fråga efter duplicerade filer i ett katalogträd (LINQ) (Visual Basic)
Visar hur du grupperar för alla filnamn som förekommer på mer än en plats i ett angivet katalogträd. Visar också hur du utför mer komplexa jämförelser baserat på en anpassad jämförelse.

Så här frågar du efter innehållet i filer i en mapp (LINQ) (Visual Basic)
Visar hur du itererar genom mappar i ett träd, öppnar varje fil och frågar efter filens innehåll.

Kommentarer

Det finns en viss komplexitet i att skapa en datakälla som korrekt representerar innehållet i filsystemet och hanterar undantag på ett korrekt sätt. Exemplen i det här avsnittet skapar en samling ögonblicksbilder av FileInfo objekt som representerar alla filer under en angiven rotmapp och alla dess undermappar. Det faktiska tillståndet för var FileInfo och en kan ändras i tiden mellan när du börjar och slutar köra en fråga. Du kan till exempel skapa en lista över FileInfo objekt som ska användas som datakälla. Om du försöker komma åt Length egenskapen i en fråga FileInfo försöker objektet komma åt filsystemet för att uppdatera värdet Lengthför . Om filen inte längre finns får du en FileNotFoundException i din fråga, även om du inte frågar filsystemet direkt. Vissa frågor i det här avsnittet använder en separat metod som använder dessa undantag i vissa fall. Ett annat alternativ är att hålla datakällan uppdaterad dynamiskt med hjälp FileSystemWatcherav .

Se även