Ich brauche eine gültige Methode, um zu überprüfen, ob a String
stellt einen Pfad für eine Datei oder ein Verzeichnis dar. Was sind gültige Verzeichnisnamen in Android? Wie sich herausstellt, können Ordnernamen enthalten '.'
chars, wie versteht das System also, ob es eine Datei oder einen Ordner gibt?
Überprüfen Sie, ob ein Pfad eine Datei oder einen Ordner darstellt
Egor
Baz
Vorausgesetzt path
ist dein String
.
File file = new File(path);
boolean exists = file.exists(); // Check if the file exists
boolean isDirectory = file.isDirectory(); // Check if it's a directory
boolean isFile = file.isFile(); // Check if it's a regular file
Sehen File
Javadoc
Oder Sie können die NIO-Klasse verwenden Files
und überprüfen Sie die Dinge wie folgt:
Path file = new File(path).toPath();
boolean exists = Files.exists(file); // Check if the file exists
boolean isDirectory = Files.isDirectory(file); // Check if it's a directory
boolean isFile = Files.isRegularFile(file); // Check if it's a regular file
-
Wie ich in meiner Frage erwähnt habe, habe ich nur Strings und keine Dateiinstanzen, und ich kann sie nicht erstellen.
– Jegor
8. Oktober 2012 um 11:08 Uhr
-
path
in meinem beispiel ist dasString
. Warum kannst du keine erstellenFile
Beispiel? Beachten Sie, dass dadurch nichts am Dateisystem geändert wird.– Baz
8. Oktober 2012 um 11:09 Uhr
-
Hier ist ein konkretes Beispiel: Ich versuche, eine Datei mit dem folgenden Pfad zu erstellen: /mnt/sdcard/arc/root, und für isDirectory() gibt es false zurück. Was ist hier das Problem?
– Jegor
8. Oktober 2012 um 11:19 Uhr
-
@Egor Ziemlich schwer zu sagen, da ich kein Android-Gerät habe. Beachten Sie, dass
root
kann eine Datei sein. Dateien haben nicht unbedingt eine.something
Verlängerung.– Baz
8. Oktober 2012 um 11:22 Uhr
-
Die Methode isDirectory() würde nur dann true zurückgeben, wenn die Datei existiert und es sich um ein Verzeichnis handelt. Wenn die im Pfad angegebene Datei nicht existiert, wird auch false zurückgegeben. Also würde isDirectory () false zurückgeben, wenn der angegebene Pfad nicht existiert oder existiert, aber kein Verzeichnis ist … Hoffe, das hilft …
– Praful Bhatnagar
9. Oktober 2012 um 8:57 Uhr
Saubere Lösung, während Sie bei der nio-API bleiben:
Files.isDirectory(path)
Files.isRegularFile(path)
-
Dies ist die bessere Antwort, wenn Sie eine Liste von Verzeichnissen durchlaufen. Hier verwenden Sie eine statische Klasse, um diese Prüfungen auszuführen, anstatt eine neue zu erstellen
File
Gegenstand jedes Mal. Spart Speicher– Kervvv
6. Juli 2018 um 2:02 Uhr
-
Beantwortet nicht die gestellte Frage. Dateien.isDirectory( ) akzeptiert keinen String.
– gerardw
6. Februar 2019 um 14:16 Uhr
-
Ab
String
? Kein Problem…Path path = Paths.get(myString);
und schon kann es losgehen!– Stefan
20. März um 16:48 Uhr
Sheng
Bitte halten Sie sich an die nio-API, um diese Prüfungen durchzuführen
import java.nio.file.*;
static Boolean isDir(Path path) {
if (path == null || !Files.exists(path)) return false;
else return Files.isDirectory(path);
}
-
Warum eine Antwort in Scala geben, wenn die Frage nach Java-Code fragt (siehe Tags)?
– Baz
22. Oktober 2015 um 15:58 Uhr
-
@Baz Weil Scala kovariant zu Java ist … nur ein Scherz 😀 . Ich habe die Antwort aktualisiert.
– Sheng
23. Oktober 2015 um 14:29 Uhr
-
Sie können ein temporäres Verzeichnis erstellen, dort Verzeichnisse und Dateien erstellen. Verwenden Sie dann den obigen Code und bestätigen Sie. Verwenden Sie einerseits normale Dateien/Verzeichnisse, andernfalls verwenden Sie einen Dummy-Pfad eines Elements, das nicht erstellt wird.
– Gondri
11. Oktober 2018 um 10:02 Uhr
Das System kann Ihnen nicht sagen, ob a String
repräsentieren a file
oder directory
wenn es ist nicht vorhanden im Dateisystem. Zum Beispiel:
Path path = Paths.get("/some/path/to/dir");
System.out.println(Files.isDirectory(path)); // return false
System.out.println(Files.isRegularFile(path)); // return false
Und für folgendes Beispiel:
Path path = Paths.get("/some/path/to/dir/file.txt");
System.out.println(Files.isDirectory(path)); //return false
System.out.println(Files.isRegularFile(path)); // return false
Wir sehen also, dass das System in beiden Fällen false zurückgibt. Dies gilt für beide java.io.File
und java.nio.file.Path
String path = "Your_Path";
File f = new File(path);
if (f.isDirectory()){
}else if(f.isFile()){
}
Juvanis
Um zu überprüfen, ob eine Zeichenfolge einen Pfad oder eine Datei programmatisch darstellt, sollten Sie API-Methoden wie verwenden isFile(), isDirectory().
Wie versteht das System, ob es eine Datei oder einen Ordner gibt?
Ich denke, die Datei- und Ordnereinträge werden in einer Datenstruktur gespeichert und vom Dateisystem verwaltet.
gerardw
public static boolean isDirectory(String path) {
return path !=null && new File(path).isDirectory();
}
Um die Frage direkt zu beantworten.
“Wie versteht das System, ob es eine Datei oder einen Ordner gibt”: Wie kann das System nicht verstehe? Es ist dort auf der Platte im Dateisystem und es ist das eine oder andere.
– Benutzer207421
13. Oktober 2016 um 10:19 Uhr