Datei-Pfad liefert 'null' für einen bestimmten Speicherort und Dateiname

Kann jemand bitte sagen Sie mir, wo bin ich falsch im code.Ich bin versucht, suchen eine bestimmte Datei namens filename im Verzeichnis-Pfad und versucht die Rückkehr der filepath aber es ist immer wiederkehrenden null.

Hier ist der code, den ich verwende:

public String walk( String path, String filename ) {
String filePath = null;
    File root = new File( path );
    File[] list = root.listFiles();

    for ( File f : list ) {
        if ( f.isDirectory() ) {
            walk( f.getAbsolutePath(),filename );
           }
        else if (f.getName().equalsIgnoreCase(filename)){
            System.out.println( "File:" +f.getAbsolutePath() );
            filePath= f.getAbsolutePath();
           if(filePath.endsWith(memberPath)){
               System.out.println( "Found: Should exit");
               break;
           }
        }
     }
    System.out.println( "OUT of for:"  );
    return filePath;
}

er druckt

AUS:

 OUT of for:    

 File:d:\IM\EclipseWorkspaces\runtime-EclipseApplication\SIT\So\mmm\aaa\xxx.c

Should exit

OUT of for:

OUT of for:

Ich verstehe nicht, warum es immer noch geht zurück auf den loop

EDIT: UPDATE:

Ich habe einen anderen Weg gefunden. bitte korrigieren falls etwas falsch ist :declare Dateipfad als statische variable

    public static void walk( String path, String filename ) {

    File root = new File( path );
    File[] list = root.listFiles();

    for ( File f : list ) {
       if ( f.isDirectory() ) {
            walk( f.getAbsolutePath(),filename );
           }
        else if (f.getName().equalsIgnoreCase(filename) && f.getAbsolutePath().endsWith(memberPath)){
             System.out.println( "Should exit");
             filePath = f.getAbsolutePath();
             break;
     }
       }

}
  • Wo kommt memberPath kommen? Warum hast du die Zeile if(filePath.endsWith(memberPath)) überhaupt?
  • if (filePath.endsWith(memberPath)) kann das problem sein - denn nur wenn diese erfüllt ist wird die Schleife unterbrochen, oh, Ihr ist ein anderes problem das ich sehe nicht, dies ist ein rekursiver Aufruf bitte fügen Sie, wenn (f.isDirectory() {filePath = Wanderung(f.getAbsolutePath(), filename)})
  • es ist eine statische variable mit dem relativen Pfad der Datei
  • Hinweis: Bei der Verwendung von Java SE 7, es wird empfohlen, die neuen NIO-File-API, wo möglich: docs.oracle.com/javase/tutorial/essential/io/fileio.html
InformationsquelleAutor user1688404 | 2012-11-23
Schreibe einen Kommentar