How to open .gif file as InputStream from external storage on android

android, android-emulator, java

Solution

`AssetManager` is for accessing the files in the assets folder of the application package. It cannot be used to access files in the external storage.

You can use the following:

final String TAG = "MyAppTag";

File picturesDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = null;
final int readLimit = 16 * 1024;
if(picturesDir != null){
    imageFile = new File(picturesDir, "01.gif");
} else {
    Log.w(TAG, "DIRECTORY_PICTURES is not available!");
}
if(imageFile != null){
    mInputStream =  new BufferedInputStream(new FileInputStream(imageFile), readLimit);
    mInputStream.mark(readLimit);
} else {
    Log.w(TAG, "GIF image is not available!");
}

Please also take a look at the sample code available in `getExternalFilesDir`

Update from : this

Problem

I am trying to load .gif image from external storage (pictures directory) but I am getting 'file not found exception' using the following code. ``` InputStream mInputStream = null; AssetManager assetManager = getResources().getAssets(); try { mInputStream = assetManager.open(getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath().concat("/01.gif")); } catch (IOException e) { e.printStackTrace(); } ``` I have also tested using manually path but got same exception ``` mInputStream = assetManager.open("file:///mnt/sdcard/Android/data/com.shurjo.downloader/files/Pictures/01.gif"); ``` There is a write/read permission from the SD card in menifest file ``` <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` Please help me how can I open a file as InputStream from external storage. Thanks in advance. Note: I have tested it on emulator and there is a file 01.gif under Pictures folder (please see manual path). I can create directories and put files in those directories but can not able to access those files though Input Stream.

Original source

Related problems