在我的应用中,我正在创建存储在设备下载目录中的文件。我的所有用户都对这种机制感到满意......除了那些使用三星Galaxy Note的用户。
没有拥有这样的设备就很难调试。在我的代码中,我正在使用
File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
"file01");
if (newFile.exists()) {
// show error
} else {
if (!newFile.mkdirs()) {
// show error
}
}
找到目标目录的路径。在Galaxy Note上,返回的路径是" / storage / sdcard0 / Download"。但是,在本地文件系统目录中使用小写(" download"),并且我的应用程序创建的文件显然不存在于本地文件目录中。至少我的用户抱怨这个。我假设问题与路径中的小写/大写差异有关。
有没有人知道为什么它适用于除Galaxy Note之外的所有设备?
谢谢!
答案 0 :(得分:8)
无法保证getExternalStoragePublicDirectory()
返回的位置确实存在。您的可能是第一个需要这些目录中特定目录的应用程序。因此,您的工作就是在所有设备上拨打mkdirs()
,而不仅仅是这个设备。
除此之外,为什么其他人(三星或其他第三方应用程序)正在创建一个小写的download
目录,这是确定"为什么"是找出谁创建了该目录,然后联系该开发人员。这不太可能是值得投资的。
只要您调用mkdirs()
来创建Download
,可能存在的任何其他目录都不是您真正关心的问题。如果您想检测这样的可能碰撞,并警告用户,您可以这样做,但我不知道这是否值得。