Überprüfen Sie, ob ein Pfad eine Datei oder einen Ordner darstellt

Lesezeit: 4 Minuten

Benutzer-Avatar
Egor

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?

  • “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

Benutzer-Avatar
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 das String. Warum kannst du keine erstellen File 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

Benutzer-Avatar
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 directorywenn 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()){



  }

Benutzer-Avatar
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.

Benutzer-Avatar
gerardw

public static boolean isDirectory(String path) {
    return path !=null && new File(path).isDirectory();
}

Um die Frage direkt zu beantworten.

1344460cookie-checkÜberprüfen Sie, ob ein Pfad eine Datei oder einen Ordner darstellt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy