Es war ein Vorfall, als ich ein Programm erstellte, das die File-Klasse in Java verwendet. ..
Es war ein Programm, das den Ordnerbaum eines angegebenen Ordners patrouillierte, den Text danach las und an CSV ausgab.
targetFolder ├folder1 │ ├folder1_folder1 │ │ ├text1.txt │ │ ├text2.txt │ │ └text3.txt │ └folder1_folder2 │ ├text.txt │ ├text2.txt │ └text3.txt ├folder2 │ ├folder2_folder1 │ │ ├text1.txt │ │ ├text2.txt │ │ └text3.txt
Folgendes wird weggelassen
Die Methode, um herumzugehen, ist wie folgt
private static List<File> getFileInstanceList(String filePathStr) throws IOException {
try (Stream<Path> path = Files.list(Paths.get(filePathStr))) {
return path.map(f -> f.getFileName().toFile()).collect(Collectors.toList());
}
}
Wenn Sie den Pfad des Ordners als Argument übergeben, wird die Dateiinstanz des Ordners in diesem Ordner in einer Liste zurückgegeben.
List<File> list = getFileInstanceList("C:\Users\hoge\Desktop\targetFile\");
An der Lesequelle wurde die zurückgegebene Liste mit For-each wiederholt, und der Dateipfad des untergeordneten Ordners wurde erneut an die obige Methode übergeben, aber ...
Es gab ein Problem mit der von dieser Methode zurückgegebenen Dateiinstanz Als ich den Pfad des untergeordneten Ordners erhielt, konnte ich nur den Dateinamen erhalten
Als ich JavaDoc der File-Klasse überprüft habe, habe ich die folgende Beschreibung gefunden
Gibt ein Dateiobjekt zurück, das diesen Pfad darstellt. Wenn dieser Pfad dem Standardanbieter zugeordnet ist, entspricht diese Methode der Rückgabe eines Dateiobjekts, das mit einer Zeichenfolgendarstellung dieses Pfads erstellt wurde. Wenn dieser Pfad durch Aufrufen der File-to-Path-Methode erstellt wird, kann nicht garantiert werden, dass das von dieser Methode zurückgegebene File-Objekt der ursprünglichen Datei entspricht.
Entspricht der Rückgabe eines Dateiobjekts, das mit einer Zeichenfolgendarstellung erstellt wurde? ??
Ich weiß nicht, was es ist, aber ich denke, es ist so, wenn es leicht zu verstehen ist. Die Dateiklasse verfügt über einen Konstruktor, der String als Argument verwendet Wenn die zu diesem Zeitpunkt generierte Instanz den vollständigen Pfad der Datei angibt Manchmal wird nur der Dateiname angegeben, letzterer kann jedoch den tatsächlichen Status der Datei nicht korrekt beibehalten.
Nun, "C: \ Benutzer \ hoge \ Desktop \ Zieldatei \ Ordner1" Wenn eine von "Ordner1" erstellte Dateiinstanz vorhanden ist, ist die erstere realistischer.
private static List<File> getFileInstanceList(String filePathStr) throws IOException {
try (Stream<Path> path = Files.list(Paths.get(filePathStr))) {
return path.map(f -> new File(f.toUri())).collect(Collectors.toList());
}
}
Da es ausreicht, den vollständigen Pfad zum Generieren einer Datei zu übergeben, habe ich ihn geändert, um eine Datei mit Uri of Path als Argument zu instanziieren.
Ich bin mir nur nicht sicher, ob ich JavaDoc lese. Ist Api daran gewöhnt?
Recommended Posts