Android; Vérifier si le fichier existe sans en créer un nouveau


227

Je veux vérifier si le fichier existe dans mon dossier de packages, mais je ne veux pas en créer un nouveau.

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

Ce code vérifie-t-il sans créer de nouveau fichier?


doublon possible du test si le fichier existe
piokuc

1
@Kunok Je vérifie votre commentaire d'édition: mots supprimés tels que réservoirs tels qu'ils sont ... : P
Kevin Guan

1
@KevinGuan Oh ouais ma mauvaise, je viens de rentrer de la nouvelle soirée de veille donc je n'ai pas pu écrire correctement :)
Kunok

Réponses:


440

Votre morceau de code n'en crée pas un nouveau, il vérifie seulement s'il est déjà là et rien d'autre.

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.

5
Je ne sais pas pourquoi dans mon cas ce code crée un nouveau fichier.
ofnowhere

Comment archiver également le sous-dossier?
Pratik Butani

4
C'est comme ça car il n'y a pas de méthode statique: File.exists (fichier String), vous devez donc instancier un nouvel objet File pour accéder à la méthode 'Exists'.
Giova

3
Je pense que OP ne souhaite pas créer de nouvel objet fichier.
AndroDev

1
@AndroDev no - il ne souhaite pas créer de nouveau FICHIER, la réponse crée une nouvelle REFERENCE au fichier.
Marian Paździoch

31

Lorsque vous utilisez ce code, vous ne créez pas un nouveau fichier, il crée simplement une référence d'objet pour ce fichier et teste s'il existe ou non.

File file = new File(filePath);
if(file.exists()) 
    //do something

21

Cela a fonctionné pour moi:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }

2
C'est la solution si vous n'avez que le nom du fichier et non son chemin
Zach

1
@Zach Pas vraiment, son chemin serait le premier paramètre que j'ai envoyé (getApplicationContext (). GetFilesDir ())
Jordi Vicens

8

Lorsque vous dites «dans votre dossier de package», voulez-vous dire vos fichiers d'application locaux? Si c'est le cas, vous pouvez en obtenir une liste à l'aide de la méthode Context.fileList () . Parcourez et recherchez votre fichier. Cela suppose que vous avez enregistré le fichier d'origine avec Context.openFileOutput () .

Exemple de code (dans une activité):

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

5

Les methodsdans la classe Path sont syntaxiques, ce qui signifie qu'ils opèrent sur l'instance Path. Mais finalement, vous devez accéder au filesystème pour vérifier qu'un chemin particulier existe

 File file = new File("FileName");
 if(file.exists()){
 System.out.println("file is already there");
 }else{
 System.out.println("Not find file ");
 }

1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}

0

Propriétés d'extension Kotlin

Aucun fichier ne sera créé lorsque vous créerez un objet File, ce n'est qu'une interface.

Pour faciliter le travail avec les fichiers, il existe une .toFilefonction existante sur Uri

Vous pouvez également ajouter une propriété d'extension sur File et / ou Uri, pour simplifier davantage l'utilisation.

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

Utilisez ensuite uri.existsou file.existspour vérifier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.