Reputation: 22469
I am trying to download an image file and override and existing file if it exists.
But it doesn't replace the existing file.
public static String saveBitmap(String url, String fileName, Context context,
boolean deleteExisting) {
File cacheDir;
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
cacheDir = context.getDir("images", Context.MODE_PRIVATE);
else
cacheDir = context.getCacheDir();
if (!cacheDir.exists())
cacheDir.mkdirs();
File f = new File(cacheDir, fileName + ".png");
Bitmap bitmap = null;
// Is the bitmap in our cache?
if (f.exists()) {
bitmap = BitmapFactory.decodeFile(f.getPath());
}
if (bitmap != null && !deleteExisting)
return f.getPath();
else {
// Nope, have to download it
try {
InputStream input = new URL(url).openConnection().getInputStream();
bitmap = BitmapFactory.decodeStream(new FlushedInputStream(input));
// save bitmap to cache for later
writeFile(bitmap, f);
return f.getPath();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
return null;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
}
Upvotes: 3
Views: 6999
Reputation: 2059
Have you tried permission, if not then add this permission in manifest
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
Upvotes: 0
Reputation: 3195
Go through following code for storing file
private void createDirectoryAndSaveFile(Bitmap imageToSave, String fileName) {
File direct = new File(Environment.getExternalStorageDirectory() + "/DirName");
if (!direct.exists()) {
File wallpaperDirectory = new File("/sdcard/DirName/");
wallpaperDirectory.mkdirs();
}
File file = new File(new File("/sdcard/DirName/"), fileName);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Upvotes: 5