gpt4 book ai didi

android检查文件是否存在区分大小写?

转载 作者:行者123 更新时间:2023-11-29 22:27:31 31 4
gpt4 key购买 nike

我必须更改文件夹的标题大小写。基本上,在应用程序启动时,我想寻找旧外壳,如果它仍然存在,则重命名它。到目前为止,在我的测试中,android 忽略了外壳,并将文件夹外壳报告为您发送的任何内容。所以基本上

new File(PATH_WITH_OLD_CASING) == new File(PATH_WITH_NEW_CASING)

而且它似乎还报告了您发送的绝对路径,而不考虑它在文件系统中的实际命名。所以

new File(PATH_WITH_OLD_CASING).getAbsolutePath() == PATH_WITH_OLD_CASING;

new File(PATH_WITH_NEW_CASING).getAbsolutePath() == PATH_WITH_NEW_CASING;

即使它们指的是同一个文件。

所以我正在努力想出一种方法来确定旧外壳是否仍然存在。我可能可以在父目录上做一个 listFiles 来获取外壳,但它是 SD 卡的根目录,我真的不想在每次应用程序启动时都这样做(这似乎不是一个非常干净的解决方案)。

有什么想法吗?

最佳答案

你说目录在SD卡上,这很可能是你的问题所在。

默认情况下,SD 卡格式化为 FAT,保留大小写但不区分大小写。

这意味着/sdcard/Hello 与/sdcard/HeLlO 相同。

现在,File 之所以没有像您期望的那样运行,我相信是因为它对您传递给它的路径名进行操作,而不是读取文件系统中存在的内容。即使您打开文件并且它成功了,我仍然不希望它会更新您给它的路径,我希望它只是维护一个内部标志,表明文件已成功打开。

你应该使用 getCanonicalPath()而不是 getAbsolutePath():

Most callers should use getAbsolutePath() instead. A canonical path is significantly more expensive to compute, and not generally useful. The primary use for canonical paths is determining whether two paths point to the same file by comparing the canonicalized paths.

关于android检查文件是否存在区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5407396/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com