Android; Überprüfen Sie, ob eine Datei vorhanden ist, ohne eine neue zu erstellen

227

Ich möchte überprüfen, ob eine Datei in meinem Paketordner vorhanden ist, aber ich möchte keine neue erstellen.

File file = new File(filePath);
if(file.exists()) 
     return true;

Prüft dieser Code, ohne eine neue Datei zu erstellen?

MBH
quelle
mögliches Duplikat von Test, wenn Datei existiert
piokuc
1
@ Kunok Ich überprüfe Ihren Bearbeitungskommentar: entfernte Wörter wie Panzer wie sie sind ... : P
Kevin Guan
1
@ KevinGuan Oh ja mein schlechtes, bin gerade von der Silvesterparty nach Hause gekommen, also konnte ich nicht richtig schreiben :)
Kunok

Antworten:

440

Ihr Codeabschnitt erstellt keinen neuen, sondern prüft nur, ob er bereits vorhanden ist und sonst nichts.

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.
Maikel Bollemeijer
quelle
5
Ich weiß nicht, warum in meinem Fall dieser Code eine neue Datei erstellt.
nirgendwo
Wie kann ich auch einen Unterordner einchecken?
Pratik Butani
4
Dies ist ähnlich, da es keine statische Methode gibt: File.exists (String-Datei). Sie müssen also ein neues File-Objekt instanziieren, um auf die 'Exists'-Methode zuzugreifen.
Giova
3
Ich denke, OP möchte kein neues Dateiobjekt erstellen.
AndroDev
1
@AndroDev nein - er möchte keine neue DATEI erstellen, die Antwort erstellt eine neue REFERENZ für die Datei.
Marian Paździoch
31

Wenn Sie diesen Code verwenden, erstellen Sie keine neue Datei, sondern erstellen lediglich eine Objektreferenz für diese Datei und testen, ob sie vorhanden ist oder nicht.

File file = new File(filePath);
if(file.exists()) 
    //do something
Victor Laerte
quelle
21

Es hat bei mir funktioniert:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
quelle
2
Dies ist die Lösung, wenn Sie nur den Dateinamen und nicht seinen Pfad haben
Zach
1
@Zach Nicht wirklich, sein Pfad wäre der erste Parameter, den ich gesendet habe (getApplicationContext (). GetFilesDir ())
Jordi Vicens
8

Wenn Sie "in Ihrem Paketordner" sagen, meinen Sie damit Ihre lokalen App-Dateien? In diesem Fall können Sie eine Liste mit der Context.fileList () -Methode abrufen . Durchlaufen Sie einfach und suchen Sie nach Ihrer Datei. Vorausgesetzt, Sie haben die Originaldatei mit Context.openFileOutput () gespeichert .

Beispielcode (in einer Aktivität):

public void onCreate(...) {
    super.onCreate(...);
    String[] files = fileList();
    for (String file : files) {
        if (file.equals(myFileName)) {
            //file exits
        }
    }
}
thomas88wp
quelle
5

Die methodsin der Path-Klasse sind syntaktisch, was bedeutet, dass sie auf der Path-Instanz ausgeführt werden. Schließlich müssen Sie jedoch auf das fileSystem zugreifen , um zu überprüfen, ob ein bestimmter Pfad vorhanden ist

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }
Anand Dwivedi
quelle
1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}
HomieZ2
quelle
0

Kotlin-Erweiterungseigenschaften

Wenn Sie ein Dateiobjekt erstellen, wird keine Datei erstellt, sondern nur eine Schnittstelle.

Um das Arbeiten mit Dateien zu vereinfachen, gibt es .toFilein Uri eine vorhandene Funktion

Sie können auch eine Erweiterungseigenschaft für Datei und / oder Uri hinzufügen, um die Verwendung weiter zu vereinfachen.

val File?.exists get() = this?.exists() ?: false
val Uri?.exists get() = File(this.toString).exists()

Dann benutzen Sie einfach uri.existsoder file.exists, um zu überprüfen.

Gibolt
quelle