大家好开发者。我一直在这里阅读很多,但找不到解决问题的方法。
我有一个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");
}
日志结果如下:
旧文件存在
新文件名: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,我真的不知道为什么......如果你们有一个解决方案会很好。随意提问
答案 0 :(得分:0)
正当我关闭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中有效。 我猜这些选项将来会被添加。无论如何,这是一个多么愚蠢的错误,但很高兴我发现了它。抱歉打扰。