android - fichier.exists() retourne la valeur false pour fichier existant (pour rien d'autre que pdf)

Les deux fichiers sont présents sur la carte sd, mais pour quelque raison il existe() renvoie false, le fichier png.

//String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-921042926.png";
  String path = "/mnt/sdcard/Android/data/com.gemoro.toffer/cache/1551619351/0/foto/-1200240592.pdf";

File file2 = new File(path);

if (null != file2)
{
    if(file2.exists())
    {
        LOG.x("file exist");
    }
    else
    {
        LOG.x("file does not exist");
    }
}

Maintenant, j'ai regarder sous le capot, ce que la méthode de fichier.exists() ne fait et c'est ce qu'il fait:

public boolean exists()
{
    return doAccess(F_OK);
}

private boolean doAccess(int mode)
{
    try
    {
        return Libcore.os.access(path, mode);
    }
    catch (ErrnoException errnoException)
    {
        return false;
    }
}

Peut-il que la méthode finit par jeter l'exception et en renvoyant false?

Si oui,

  • comment puis-je faire ce travail
  • quelles sont les autres options pour vérifier si un fichier existe sur la carte sd sont disponibles pour une utilisation?

Grâce.

Peut-être que vous (Java) n'avez pas les permissions pour accéder à ces deux fichiers?
Je pense que je fais: <uses-permission android:name="android.la permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.la permission.READ_EXTERNAL_STORAGE" />

OriginalL'auteur Goran Horia Mihail | 2014-02-05