我在按钮上成功保存图像,然后单击一个文件夹中的SD卡。
我遇到的问题是,如果我保存的文件超过1个,图像会覆盖以前保存的现有图像,因为文件名相同,所以它会覆盖退出的图像。
当图像保存时,是否有任何方法可以实现它,每次都会以不同的名称保存,因此不会覆盖?
提前致谢!
这是我到目前为止所拥有的:
OutputStream output;
Time now = new Time();
now.setToNow();
String time = now.toString();
// Retrieve the image from the res folder
BitmapDrawable drawable = (BitmapDrawable) mImageView.getDrawable();
Bitmap bitmap1 = drawable.getBitmap();
// Find the SD Card path
File filepath = Environment.getExternalStorageDirectory();
// Create a new folder in SD Card
File dir = new File(filepath.getAbsolutePath()
+ "/Wallpapers/");
dir.mkdirs();
// Create a name for the saved image
File file = new File(dir, "Wallpaper"+ time );
// Show a toast message on successful save
Toast.makeText(getActivity(), "Wallpaper saved with success!",
Toast.LENGTH_LONG).show();
try {
output = new FileOutputStream(file);
// Compress into png format image from 0% - 100%
bitmap1.compress(Bitmap.CompressFormat.PNG, 100, output);
output.flush();
output.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
答案 0 :(得分:1)
使用:
Time now = new Time();
now.setToNow();
String time = now.toString();
并获取您尝试保存文件的时间。
然后,将其附加到文件名的末尾。 这样,您的文件将永远不会具有相同的名称,但始终具有相同的前缀。
检查目录是否存在,
File dir = new File(Environment.getExternalStorageDirectory() + "/mydirectory");
if(dir.exists() && dir.isDirectory()) {
// do something here
}
但是,没有SD卡的设备将无法正常工作。
答案 1 :(得分:1)
Would there be any way I would be able to make it so when the image saves,
it saves with a different name each time so it doesn't overwrite?
是的,您需要在使用File.exists()
保存之前检查目录中是否已提供相同名称的文件。这样做:
File file = new File(dir, "Wallpaper.jpg");
if(file.exists()){
// assign different name to file
}
else{
// file not present with same name
}