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 Zeileif(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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie nicht den Teil mit
memberPath
. Ändern Sie Ihren code wie folgt Aussehen:memberPath
variable? Verstehen Sie, was Ihren eigenen code hat?memberPath
variable. Wo ist es deklariert und wo wird es gesetzt? Was ist der Zweck dermemberPath
variable?Zurück den Pfad der Datei, sobald es gefunden wird:
}
Bearbeitet: f Hinzugefügt.getAbsolutePath().endsWith(memberPath)