我正在尝试下载图像文件并覆盖现有文件(如果存在)。
但它不会取代现有文件。
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;
}
}
}
答案 0 :(得分:3)
通过以下代码存储文件
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();
}
}
答案 1 :(得分:0)
您是否已尝试过权限,如果没有,请在manifest
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"