Durchsuchen !



  • Guten Nachmittag, 😮

    ich suche eine Möglichkeit ein bestimmtes Verzeichniss (C:\Upload) und alle Unterordner (C:\Upload\Hans und C:\Upload\Peter usw...) nach Dateien mit der Endung ".doc" zu durchsuchen !

    Das Programm soll wenn es eine Datei mit der Endung ".doc" findet den vollständigen Pfad in einer MessageBox ausgeben !

    Hat schonmal jemand soetwas gemacht oder kann mir vielleicht sagen wo ich dazu Informationen finde ? 😕

    Ich währe euch sehr dankbar, 🙂
    Peter Neuhoff



  • Hallo !

    Zuerst musst du eine Instanz der Klasse System.IO.DirectoryInfo erzeugen die
    Dein Verzeichniss enthält.

    System.IO.DirectoryInfo DirInfo = new System.IO.DirectoryInfo(@"C:\bla");

    dann erhälst Du mit der Methode DirInfo.GetDirectories die Unterverzeichnisse.
    Das ganze gehst Du einfach in einer SChleife durch.
    foreach(System.IO.DirectoryInfo DI in DirInf.GetDirectories())
    {
    //Methode zum Auslesen der Dateien aufrufen
    GetFiles(DI);

    }

    In der Schleife rufst Du eine Methode auf die für das jeweilige Verzeichniss die Dateien ausliest.

    In der Methode erzeugst Du ein Array welches die Dateien des Verzeichnisses
    als System.IO.FileInfo Objekte enthält.

    private System.IO.FileInfo[] aFileInfo = DI.GetFiles();

    Die Dateien gehst Du mit folgender SChleife durch:
    foreach(System.IO.FileInfo fi in aFileInfo)
    {
    //Dateiendung vergleichen
    if(fi.Extension=="doc")
    {
    //Pfad der Datei
    MessageBox.Show(fi.FullName());
    }

    }

    Das ganze musst Du dann noch rekursiv aufrufen damit auch alle Unterverzeichnisse durchsucht werden.

    Ich habe das jetzt nicht getestet, müsste aber so funktionieren.

    Gruß

    Stefan



  • Morgen....
    ich bekomme das leider nicht so hin könnte jemand vielleicht mal eine Beispiel .cs Datei posten ?

    Ich währe euch sehr dankbar,
    Peter Neuhoff



  • Keiner hier ?

    Bitte helft mir doch ich bin am Verzweifeln !

    Greez > Peter Neuhoff



  • ohne anspruch auf richtigkeit.. so durchsucht er einen ordner "arbeit", der im gleichen ordner mit drin liegt, wie die cs datei:

    using System;
    using System.IO; 
    
    class MainClass
    { 
    
        public static void Main(string[] args)
        {
    
                    DirectoryInfo d = new DirectoryInfo ("arbeit" ) ;
                    FileInfo [ ] f = d.GetFiles ( ) ;
                    int n = 0 ;
    
                    foreach ( FileInfo i in f )
                    {
    
                        string str = i.Extension ;
                        if ( str == ".doc" || str == ".jpg" || str == ".gif" )
                        {
    
                        Console.WriteLine( i.Name,n ) ;
                            n++ ;
                        }
                    }
        }
    }
    


  • Danke das funktioniert echt super !

    Hast du vielleicht auch noch einen Code mit dem ich alle Unterverzeichtnisse durchgehen kann ?

    THANKZ Peter Neuhoff



  • *frecher* *grins*

    das schreibt aber StefanVo schon oben.. das kriegst du selber hin 😉

    ps: microsoft ist dein freund http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemiodirectoryinfoclassgetfilesysteminfostopic.asp



  • Original erstellt von StefanVo:
    **new System.IO.DirectoryInfo(@"C:\bla");
    **

    Hi,
    was heißt es, wenn man eine "@" vor einem String hat?



  • stellt das "\" als steuerzeichen ab

    entweder:

    "c:\\ordner\\datei.suffix"

    oder
    @"c:\ordner\datei.suffix"



  • danke !



  • Sorry ich pake das nicht 😞 !

    Also mit folgendem Code* schaffe ich es EIN ORDNER zu durchsuchen und mir die Dateien die mit .doc enden per MessageBox ausgeben zu lassen - aber ich komme einfach nicht dahinter wie ich das mit Unterverzeichnissen machen kann ? 🙄

    DirectoryInfo DI = new DirectoryInfo ("C:\\Upload" ) ;
            FileInfo [ ] FI = DI.GetFiles ( ) ;
    
            foreach ( FileInfo i in FI )
            {
    
              string str = i.Extension ;
              if ( str == ".doc" )
                 {
                         MessageBox.Show(i.FullName) ;
                 }
            }
    

    Bitte helft mir mit der Erweiterung um Unterverzeichnisse 😕 ,
    Grüße Peter



  • Hi !

    Hier ist mal ein Sample Code.
    Solltest Du das nicht verstehen, such einfach mal bei Google, nach Rekursiven Funktionaufrufen.

    Gruß

    Stefan

    //Startverzeichnis
    System.IO.DirectoryInfo DirInfo = new System.IO.DirectoryInfo(@"C:\"); 
    
    //Erster Aufruf der Funktion GetDir
    GetDir(DirInfo);
    
    private void GetDir(System.IO.DirectoryInfo DirInf)
    {
       //Wenn im Verzeichniss Dateien sind Funktion ListFiles aufrufen
       if (DirInf.GetFiles().Length >0)
       {
         ListFiles(DirInf);
       }
       foreach(System.IO.DirectoryInfo DI in DirInf.GetDirectories())
       {
         //rekursiver Aufruf der Funktion GetDir
         //somit werden alle Unterverzeichnisse durchsucht
         GetDir(DI);
       }
    }
    
    private void ListFiles(System.IO.DirectoryInfo DirInf)
    {
        System.IO.FileInfo[] FileInfoObject = DirInf.GetFiles();
        foreach(System.IO.FileInfo fi in FileInfoObject)
        {
            string str = fi.Extension ;
        if ( str == ".doc" )
        {
            Console.WriteLine(fi.Name);
        }
        }
    }
    


  • Doch,
    so habe ich das verstanden ... hat auch super funktioniert !

    Danke...

    MfG DA Peter Neuhoff


Anmelden zum Antworten