Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Söka igenom kataloger

Postades av 2005-02-15 18:56:35 - Anders Turesson, i forum vb.net, Tråden har 5 Kommentarer och lästs av 490 personer

Jag försöker söka igenom alla underkataloger under en mapp som heter "Man", och lista alla filer som är längre än 10 tecken. Jag har följande kod. När raden strPathName = Dir() körs stannar det och jag får ett meddelande om att Dir inte kan köras på strPathName, hur skriver jag koden för att få den att funka? //Anders

Sub ListLongFileNames
Dim strInitialPathName As String = ("\\NTS\Design\Man\")
Dim strPathName, strOrder, strFileName As String

strPathName = Dir(strInitialPathName, FileAttribute.Directory)

Do While strPathName <> "" ' Kör igenom alla kataloger
strFileName = Dir(strInitialPathName & strPathName, FileAttribute.Normal)
Do While strFileName <> ""
If strFileName.Length > 10 Then Debug.WriteLine(strFileName)
strFileName = Dir()
Loop
strPathName = Dir()
Loop
End Sub


Svara

Sv: Söka igenom kataloger

Postades av 2005-02-15 23:54:15 - Andreas Håkansson

Anders,

Till att börja med vill jag <b>avråda</b> dig från att använda <b>Dir</b> då det är något som du får tillgång till genom att använda <b>Microsoft.VisualBasic</b> namnrymnden. Det är viktigt att känna till att just Microsoft.VisualBasic namnrymden (med tillhörande <b>assembly</b>) är tänk att erbjuda bakåtkompabilitet från VB6 till programmerare som flyttar över till VB.NET

Problemet med detta är att det gör att man som ny VB.NET programmerare inte bygger upp kunskap om vad själva ramverkat har att erbjuda (sakerna i Microsoft.VisualBasic avänder själv funktionaliteten i ramverket internt).

Så vad du bör titta på är namnrymden <b>System.IO</b> som innehåller allt du behöver för att arbeta med filer och kataloger. Ett enkelt sätt att lösa detta problemet på är att använda <b>rekursion</b>, dvs en funktion som anropar sig själv.

Jag skrev följande kodsnutt för att illustrera detta - den stödjer även att man skickar in hur många tecken som skall tillåtas för att man skall visa filerna, på så sätt kan du återanvända den samt enkelt ändra antalet tillåtnateckan om dina behov skulle ändras

    Public Sub DisplayFolder(ByVal Folder As String, ByVal MaxLenght As Integer)

        For Each File As String In Directory.GetFiles(Folder)
            Dim FileName As String = Path.GetFileName(File)
            If (FileName.Length <= MaxLenght) Then
                Console.WriteLine(FileName)
            End If
        Next

        For Each Dir As String In Directory.GetDirectories(Folder)
            ' Här anropar vi metoden igen, dvs samma metod som vi befinner oss
            ' i fast med nya värden. 
            DisplayFolder(Dir, MaxLenght)
        Next

    End Sub


Du anopar metoden med kod som ser ut

    DisplayFolder("c:\minkatalog", 10)


Hoppas det löser sig!


Svara

Sv:Söka igenom kataloger

Postades av 2005-02-16 13:42:50 - Anders Turesson

Hej Andreas,

Tack för tipset om dir, jag har kikat lite på System.IO och tycker det verkar trevligt, har skapat lite kataloger och kopierat lite filer och det fungerar bra. Har inte provkört koden än. En liten fråga bara. I raden "For Each File As String In Directory.GetFiles(Folder)" deklarerar du en variabel som heter File som en sträng? Det är nog enkelt när man kommer in i det, men det är just det.

Det här med rekursion var intressant oxå. Har jag aldrig använt. Är det vanligt att man använder sig av det, eller är det endast vid specialla tillfällen.

Tackar för ett mycket bra svar och för ett utförligt exempel, Jag ska prova det.

mvh // Anders


Svara

Sv: Söka igenom kataloger

Postades av 2005-02-16 21:45:53 - Andreas Håkansson

Enders

<b>Tack för tipset om dir, jag har kikat lite på System.IO och tycker det verkar trevligt, har skapat lite kataloger och kopierat lite filer och det fungerar bra. Har inte provkört koden än. En liten fråga bara. I raden "For Each File As String In Directory.GetFiles(Folder)" deklarerar du en variabel som heter File som en sträng? Det är nog enkelt när man kommer in i det, men det är just det. </b>

Japp <b>File</b> är en variabel som jag deklarerar som en sträng. <b>GetFiles</b> returnerar en array av strängar där varje sträng är ett filnamn (inklusive sökvägen till den).

<b>Det här med rekursion var intressant oxå. Har jag aldrig använt. Är det vanligt att man använder sig av det, eller är det endast vid specialla tillfällen.</b>

Det är väldigt vanligt, väl värt att läsa på.

<b>Tackar för ett mycket bra svar och för ett utförligt exempel, Jag ska prova det. </b>

det var så lite så =)


Svara

Sv:Söka igenom kataloger

Postades av 2005-02-16 21:58:56 - Per Persson

Ibland kan det vara bättre att söka på bredden först, i stället för på djupet först som man gör vid rekursion:
http://weblogs.asp.net/oldnewthing/archive/2005/02/03/366277.aspx


Svara

Sv: Söka igenom kataloger

Postades av 2005-02-20 18:00:26 - Anders Turesson


Fungerade väldigt bra !

Tack för informationen. Kommer att ha mycket nytta av den nu när jag ska jobba mycket med kataloger och filer.

mvh // Anders


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 722
27 958
271 751
570
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies