Androide; Compruebe si el archivo existe sin crear uno nuevo

227

Quiero verificar si el archivo existe en la carpeta de mi paquete, pero no quiero crear uno nuevo.

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

¿Este código verifica sin crear un nuevo archivo?

MBH
fuente
posible duplicado de Prueba si el archivo existe
piokuc
1
@Kunok Estoy revisando tu comentario de edición: palabras eliminadas como tanques como son ... : P
Kevin Guan
1
@KevinGuan Oh, sí, mi mal, acabo de llegar a casa de la fiesta de la víspera, así que no pude escribir correctamente :)
Kunok

Respuestas:

440

Su fragmento de código no crea uno nuevo, solo verifica si ya está allí y nada más.

File file = new File(filePath);
if(file.exists())      
//Do something
else
// Do something else.
Maikel Bollemeijer
fuente
55
No sé por qué en mi caso este código está creando un nuevo archivo.
ofnowhere
¿Cómo verificar en la subcarpeta también?
Pratik Butani
44
Esto es así porque no hay un método estático: File.exists (String file), por lo que debe instanciar un nuevo objeto File para acceder al método 'Exists'.
Giova
3
Creo que OP no desea crear un nuevo objeto de archivo.
AndroDev
1
@AndroDev no: no desea crear un nuevo ARCHIVO, la respuesta crea una nueva REFERENCIA para archivar.
Marian Paździoch
31

Cuando usa este código, no está creando un nuevo archivo, solo está creando una referencia de objeto para ese archivo y probando si existe o no.

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

A mí me funcionó:

File file = new File(getApplicationContext().getFilesDir(),"whatever.txt");
    if(file.exists()){
       //Do something
    }
    else{
       //Nothing
     }
Jordi Vicens
fuente
2
Esta es la solución si solo tiene el nombre del archivo y no su ruta
Zach
1
@Zach No realmente, su ruta sería el primer parámetro que envié (getApplicationContext (). GetFilesDir ())
Jordi Vicens
8

Cuando dice "en la carpeta de su paquete", ¿se refiere a sus archivos de aplicaciones locales? Si es así, puede obtener una lista de ellos utilizando el método Context.fileList () . Simplemente repita y busque su archivo. Eso supone que guardó el archivo original con Context.openFileOutput () .

Código de muestra (en una actividad):

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

Los methodsen la clase Path son sintácticos, lo que significa que operan en la instancia Path. Pero eventualmente debe acceder al filesistema para verificar que existe una ruta particular

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

Propiedades de extensión de Kotlin

No se creará ningún archivo cuando cree un objeto File, es solo una interfaz.

Para facilitar el trabajo con archivos, hay una .toFilefunción existente en Uri

También puede agregar una propiedad de extensión en Archivo y / o Uri, para simplificar aún más el uso.

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

Luego solo use uri.existso file.existspara verificar.

Gibolt
fuente