在我的应用中,我将临时文件保存到我的应用缓存文件夹中。我通过这种方法获取缓存目录的名称:
context.getCacheDir();
它返回给我这样的路径:/data/user/0/my.app.packagename但是后来当我试图通过这个方法获取我的缓存文件的父目录的名称 - file.getParent();我正在获得完全不同的缓存目录路径,在我的例子中:/data/data/my.app-packagename
所以我只是想知道为什么会这样,为什么getParent()
不会像context.getCacheDir()
那样回归路径?
行为是正确的,技术上是相同的。如果您通过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/
如果您不知道这意味着什么,请阅读qazxsw poi。
所以没有问题,你可以相信它们是相同的android。
今天这种行为使我很困惑。这是我的50美分,为此带来光明:
之后我启动了Android-Studio并打开了Device File Explorer。
现在奇怪的事情发生了
但是,内部路径似乎是相同的(即使在Android工作室中没有可见的符号链接)。
我使用RNFetchBlob(React本地包来读取文件),如果我从symbolic links输出结果,结果是/ data / user / 0 / ....即使在Android 9上这个目录也不存在。但我试了一下,输出了将在此目录中找到的所有文件,并带有以下命令:
RNFetchBlob.fs.dirs.CacheDir
...并且发现这输出了我之前缓存过的所有文件。
如果有人知道某些文档为什么Android 9中存在这种行为,请发表评论并指出我们。