Schön, Sie kennenzulernen. Ich bin ein Webingenieur im ersten Jahr, der im April dieses Jahres als neuer Absolvent angefangen hat. Dies ist der erste Beitrag! Wir werden weiterhin die Fähigkeiten und Fertigkeiten ausgeben, die wir in Zukunft gelernt haben. Ich würde mich freuen, wenn Sie einen Kommentar abgeben könnten, wenn Sie einen Fehler im Code gemacht haben oder wenn dies besser ist. Vielen Dank!
Erstellen Sie eine Methode (searchFile-Methode), die den Pfad mit einer bestimmten Datei aus einem Verzeichnis mit unbekannter Anzahl von Ebenen abruft und ausgibt. Suchen Sie hier unter "C: \ tmp" und geben Sie den Dateipfad einschließlich "hoge" im Dateinamen zurück.
Eclipse Oxygen Java8
Speichern Sie die Verzeichnis- / Dateiliste des von der listFile-Methode angegebenen Pfads in einem Array
Nehmen Sie den erfassten Inhalt in einer Schleife heraus, bewerten Sie, ob es sich um eine Datei und einen bedingten Zweig handelt a. Datei → Bewerten Sie, ob die gewünschte Datei vorhanden ist b. Andere → Rekursiver Aufruf der searchFile-Methode
main.java
import java.io.File;
public class Main {
public static void main(String[] args) {
//Geben Sie den Pfad an, nach dem Sie suchen möchten
searchFile("/tmp/");
}
public static void searchFile(String targetPath) {
File dir = new File(targetPath);
//Verzeichnis unter dem Pfad/Legen Sie die Datei in ein Array
File[] list = dir.listFiles();
for(File path : list) {
if(path.isFile()) {
//Teilen Sie den erhaltenen Pfad mit einem Schrägstrich"\\"nicht"\\\\"geben
String[] splitedPath = path.toString().split("\\\\");
String file = splitedPath[splitedPath.length-1];
if(file.toString().contains("hoge")) {
System.out.println(path);
}
//Rekursiver Aufruf der Methode, wenn die Datei keine Datei ist
}else {
searchFile(path.toString());
}
}
}
}
Ergebnis
\tmp\hogehoge\hoge.txt
Um alle Verzeichnisse zu durchsuchen, für die die Anzahl der Ebenen unbekannt ist, ist es meiner Meinung nach wichtig, einen rekursiven Aufruf durchzuführen, der sich selbst in einem bedingten Zweig aufruft.
Recommended Posts