Android oldFile.renameTo(newFile) 无法在较低 Android 上工作
Android oldFile.renameTo(newFile) not working on lower Android
各位开发者大家好。我在这里阅读了很多,但找不到解决我问题的方法。
我有一个来自 Camera Intent 的图像文件需要重命名。
重要提示:它适用于 Android 8.1,但经测试不适用于 5.1.1。
不知道为什么,我离那个捣蛋鬼更近了。它是 renameTo()
,它什么都不做,或者至少我不知道它做了什么。
这是代码的一部分:
imgFinalName = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
format + ";" + lkwNr + ";" + telefonNr + ".jpg");
if (imageFile.exists()){
Log.d("Mati","Old File exists");
}else{
Log.d("Mati","Old File doesn't exist");
}
imageFile.renameTo(imgFinalName);
Log.d("Mati","New Filename: " + imgFinalName.getName());
Log.d("Mati","Path: " + imgFinalName.getAbsolutePath());
if (imageFile.exists()){
Log.d("Mati","Old File exists");
}else{
Log.d("Mati","Old File doesn't exist");
}
if (imgFinalName.exists()){
Log.d("Mati","New File exists");
}else{
Log.d("Mati","New File doesn't exist");
}
Log结果如下:
存在旧文件
新文件名:2017-12-04_21:39:03;235;123123.jpg
路径:/storage/sdcard/Pictures/2017-12-04_21:39:03;235;123123.jpg
存在旧文件
新文件不存在
所以正如你所见,旧文件存在,然后我调用 renameTo 方法,旧文件仍然存在,新文件不存在。
正如我所说,它适用于 Android 8.1,但不适用于 5.1.1,我真的不知道为什么...如果你们有解决方案就好了。欢迎提问
正当我关掉 Android Studio 想睡觉的时候,我想到了 SimpleDateFormat。
如您在文件名中所见,它的:
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
String format = s.format(new Date());
我现在改成:
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
String format = s.format(new Date());
并且有效。请注意,“-”、“_”和“:”在 android 8.1 中有效。
我猜这些选项是将来添加的。无论如何,多么愚蠢的错误,但很高兴我发现了它。抱歉打扰了。
各位开发者大家好。我在这里阅读了很多,但找不到解决我问题的方法。
我有一个来自 Camera Intent 的图像文件需要重命名。 重要提示:它适用于 Android 8.1,但经测试不适用于 5.1.1。
不知道为什么,我离那个捣蛋鬼更近了。它是 renameTo()
,它什么都不做,或者至少我不知道它做了什么。
这是代码的一部分:
imgFinalName = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
format + ";" + lkwNr + ";" + telefonNr + ".jpg");
if (imageFile.exists()){
Log.d("Mati","Old File exists");
}else{
Log.d("Mati","Old File doesn't exist");
}
imageFile.renameTo(imgFinalName);
Log.d("Mati","New Filename: " + imgFinalName.getName());
Log.d("Mati","Path: " + imgFinalName.getAbsolutePath());
if (imageFile.exists()){
Log.d("Mati","Old File exists");
}else{
Log.d("Mati","Old File doesn't exist");
}
if (imgFinalName.exists()){
Log.d("Mati","New File exists");
}else{
Log.d("Mati","New File doesn't exist");
}
Log结果如下:
存在旧文件
新文件名:2017-12-04_21:39:03;235;123123.jpg
路径:/storage/sdcard/Pictures/2017-12-04_21:39:03;235;123123.jpg
存在旧文件
新文件不存在
所以正如你所见,旧文件存在,然后我调用 renameTo 方法,旧文件仍然存在,新文件不存在。
正如我所说,它适用于 Android 8.1,但不适用于 5.1.1,我真的不知道为什么...如果你们有解决方案就好了。欢迎提问
正当我关掉 Android Studio 想睡觉的时候,我想到了 SimpleDateFormat。
如您在文件名中所见,它的:
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
String format = s.format(new Date());
我现在改成:
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
String format = s.format(new Date());
并且有效。请注意,“-”、“_”和“:”在 android 8.1 中有效。 我猜这些选项是将来添加的。无论如何,多么愚蠢的错误,但很高兴我发现了它。抱歉打扰了。