这是一个安卓问题。调用 File.mkdirs 可以更改 Context.getFilesDir 的值。因为我没有调查所有的测试用例,所以我用这种方式陈述了这个问题。我对这个结果感到非常惊讶,并进行了一个简单的测试来确认这种行为。
String filesDir = context.getFilesDir().getAbsolutePath();
File newFile = new File(context.getFilesDir,"xxx/MyFile.txt");
newFile.getParentFile().mkdirs();
String newFilesDir = context.getFilesDir().getAbsolutePath();
您将看到 filesDir 和 newFilesDir 不一样。对 mkdirs 的调用改变了位置。我对这个结果感到惊讶,因为 Android 文档没有提到这种行为。那里的任何人都对为什么会发生这种情况以及如何处理它有一些有效的解释。我一直使用 getFilesDir 作为存储内容的地方,我喜欢在目录树中组织这些内容,看起来你不应该在 filesDir 中添加目录。