Android内部存储创建目录后,如何正确列出这些目录?
问题原因
你用getDir()创建的目录(app_One、app_Two、app_Three)和getFilesDir()指向的files目录是同级目录,而非包含关系:
getDir()创建的目录路径:/data/user/0/me.soft.myapp/app_XXXgetFilesDir()返回的路径:/data/user/0/me.soft.myapp/files
所以遍历files目录自然找不到这三个目录。
正确代码
要列出这三个目录,需要获取它们所在的父目录(即应用内部存储的根目录),然后遍历该目录下的文件/目录:
// 获取应用内部存储的根目录 val rootDir = applicationContext.filesDir.parentFile ?: return // 遍历根目录下的所有文件/目录 rootDir.listFiles()?.let { files -> println("Files count: ${files.size}") for (f in files) { println("Name: ${f.name}") } } ?: run { println("Failed to list files or directory is empty") }
如果只想过滤出getDir()创建的以app_开头的目录,可以添加过滤条件:
val rootDir = applicationContext.filesDir.parentFile ?: return rootDir.listFiles { file -> file.isDirectory && file.name.startsWith("app_") }?.let { appDirs -> println("App directories count: ${appDirs.size}") for (dir in appDirs) { println("Directory name: ${dir.name}") } } ?: run { println("No app directories found or failed to list") }
内容的提问来源于stack exchange,提问作者Michel
相关产品推荐
相关产品推荐

