在我的应用中,我将临时文件保存到我的应用缓存文件夹中。我通过这种方法获取缓存目录的名称:
context.getCacheDir();
它给我这样的路径: /data/user/0/my.app.packagename 但后来当我试图通过这种方法获取我的缓存文件的父目录的名称 - file.getParent(); 我得到的缓存目录路径完全不同,在我的情况下这个: /data/data/my.app-packagename
所以我只是想知道为什么会这样,为什么getParent()
没有返回与context.getCacheDir()
相同的路径?
答案 0 :(得分:3)
行为是正确的,技术上是相同的。 如果您通过adb shell连接到您的Android设备并进入/ data / user /并运行' ll'命令您将看到文件夹0只是/ data / data /的符号链接。
root@android:/data/user # ll
lrwxrwxrwx root root 1970-01-01 01:00 0 -> /data/data/
如果您不知道这意味着什么,请阅读symbolic links。
所以没有问题,你可以相信它们是相同的。
答案 1 :(得分:0)
这种行为今天让我很困惑。 这是我的50美分,可以为您带来启发:
此后,我启动了Android-Studio并打开了设备文件资源管理器。
现在发生了奇怪的事情:
但,内部路径似乎相同(即使android studio中没有可见的符号链接)。
我使用RNFetchBlob(反应本机包读取文件),如果我从RNFetchBlob.fs.dirs.CacheDir
输出结果,则结果为 / data / user / 0 /....在Android 9上,此目录不存在。
但是我尝试了一下,并使用以下命令输出将在此目录中找到的所有文件:
RNFetchBlob.fs.ls(RNFetchBlob.fs.dirs.CacheDir)
.then((files) => {
console.log("output-files",files);
})
...发现此文件输出了我之前缓存的所有文件。
如果有人知道一些文档,为什么Android 9会出现这种现象,请对此进行评论并指出。