Test if file exists

I think the best way to know if a file exists, without actually trying to open it, is as follows:

File file = getContext().getFileStreamPath(FILE_NAME);
if(file.exists()) ...

Hope that helps, bye!


The documentation says Context.openFileInput either returns an inputStream (file found) or throws a FileNotFoundException (not found)

http://developer.android.com/reference/android/content/Context.html#openFileInput(java.lang.String)

So it looks like the exception is your "test".

You could also try using standard

java.io.File file = new java.io.File(PATHTOYOURCONTEXT , FILE);
if (file.exists()) {
    FileInputStream fIn = new FileInputStream(file);
}

But that is not recommended. Context.openFileInput() and Context.openFileOutput() make sure you stay in your applications storage context on the device, and that all of your files get deleted when your app gets uninstalled.


With the standard java.io.File this is the function I have created, and works correctly:

private static final String APP_SD_PATH = "/Android/data/com.pkg.myPackage";
...
public boolean fileExistsInSD(String sFileName){
    String sFolder = Environment.getExternalStorageDirectory().toString() + 
            APP_SD_PATH + "/Myfolder";
    String sFile=sFolder+"/"+sFileName;
    java.io.File file = new java.io.File(sFile);
    return file.exists();
}