Android内部存储疑问:用getDir创建的目录为何未在filesDir中显示?
问题解答
核心原因是:
getDir()和openFileOutput()操作的是内部存储中不同层级的目录applicationContext.openFileOutput()创建的文件默认存放在getFilesDir()指向的目录(路径通常为/data/data/[你的包名]/files),所以遍历filesDir能看到myNewFileapplicationContext.getDir(dirName, MODE_PRIVATE)创建的目录,会放在与filesDir同级的独立目录下,路径格式为/data/data/[你的包名]/app_[dirName]——它不在filesDir的子目录范围内,因此遍历filesDir自然看不到它
验证方式:
- 直接调用
getDir("myNewDir", MODE_PRIVATE).getAbsolutePath()打印路径,就能看到该目录的实际位置 - 遍历应用内部存储的根目录(通过
context.getFilesDir().getParentFile()获取),就能找到名为app_myNewDir的目录
- 直接调用
额外说明:
Android为应用分配的私有内部存储目录下,除了files,还有cache、app_xxx(getDir创建的)等同级子目录,不同API对应不同的目录入口,彼此独立。
内容的提问来源于stack exchange,提问作者Michel
相关产品推荐
相关产品推荐

