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?

MBH
la source
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.
Maikel Bollemeijer
la source
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
Victor Laerte
la source
21

Cela a fonctionné pour moi:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
la source
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
        }
    }
}
thomas88wp
la source
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 ");
 }
Anand Dwivedi
la source
1
public boolean FileExists(String fname) {
        File file = getBaseContext().getFileStreamPath(fname);
        return file.exists();
}
HomieZ2
la source
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.

Gibolt
la source