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.