Android; Controlla se il file esiste senza crearne uno nuovo


227

Voglio verificare se il file esiste nella cartella del mio pacchetto, ma non voglio crearne uno nuovo.

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

Questo codice verifica senza creare un nuovo file?


possibile duplicato di Test se il file esiste
piokuc

1
@Kunok Sto controllando il tuo commento di modifica: parole rimosse come i carri armati come sono ... : P
Kevin Guan

1
@KevinGuan Oh sì, mio ​​cattivo, sono appena tornato a casa dalla nuova festa della vigilia, quindi non sono stato in grado di scrivere correttamente :)
Kunok,

Risposte:


440

Il tuo pezzo di codice non ne crea uno nuovo, controlla solo se è già lì e nient'altro.

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

5
Non so perché nel mio caso questo codice sta creando un nuovo file.
qui il

Come controllare anche nella sottocartella?
Pratik Butani,

4
È così perché non esiste un metodo statico: File.exists (String file), quindi è necessario instanciare un nuovo oggetto File per accedere al metodo 'Exists'.
Giova,

3
Penso che OP non desideri creare un nuovo oggetto file.
AndroDev,

1
@AndroDev no - non desidera creare un nuovo FILE, la risposta crea un nuovo RIFERIMENTO al file.
Marian Paździoch,

31

Quando si utilizza questo codice, non si sta creando un nuovo file, si sta semplicemente creando un riferimento a un oggetto per quel file e si verifica se esiste o meno.

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

21

Ha funzionato per me:

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

2
Questa è la soluzione se hai solo il nome del file e non il suo percorso
Zach

1
@Zach Non proprio, il percorso sarebbe il primo parametro che ho inviato (getApplicationContext (). GetFilesDir ())
Jordi Vicens,

8

Quando dici "nella cartella del pacchetto", intendi i file delle tue app locali? In tal caso, puoi ottenerne un elenco utilizzando il metodo Context.fileList () . Basta scorrere e cercare il tuo file. Ciò presuppone che tu abbia salvato il file originale con Context.openFileOutput () .

Codice di esempio (in un'attività):

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

5

I methodsnella classe Path sono sintattici, nel senso che operano sull'istanza Path. Ma alla fine è necessario accedere al filesistema per verificare l'esistenza di un percorso specifico

 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

Proprietà estensione Kotlin

Nessun file verrà creato quando si crea un oggetto File, è solo un'interfaccia.

Per semplificare il lavoro con i file, esiste una .toFilefunzione esistente su Uri

È inoltre possibile aggiungere una proprietà di estensione su File e / o Uri, per semplificare ulteriormente l'utilizzo.

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

Quindi basta usare uri.existso file.existsper controllare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.