Java 获取Android内部(私有)存储的任意子目录中的文件列表
有人问过这个问题,但没有提出有效的答案。有人在这里提出并回答了一个类似的问题:不幸的是,建议的答案(Java 获取Android内部(私有)存储的任意子目录中的文件列表,java,android,Java,Android,有人问过这个问题,但没有提出有效的答案。有人在这里提出并回答了一个类似的问题:不幸的是,建议的答案(getAbsoluteDir)实际上返回了一个新文件,使用与提供的文件相同的路径 现在又是这样了:我使用字符串名创建了一个子目录(使用file.mkdir()),该子目录驻留在我的应用程序的私有内部存储中(/data/data/come.my.app/file)。如何使用该字符串名称列出驻留在该子目录中的文件?我能想到的唯一方法是通过循环该应用程序目录中的所有子目录,从子目录名中获取子目录的文件对
getAbsoluteDir
)实际上返回了一个新文件,使用与提供的文件相同的路径
现在又是这样了:我使用字符串名创建了一个子目录(使用file.mkdir()
),该子目录驻留在我的应用程序的私有内部存储中(/data/data/come.my.app/file
)。如何使用该字符串名称列出驻留在该子目录中的文件?我能想到的唯一方法是通过循环该应用程序目录中的所有子目录,从子目录名中获取子目录的文件
对象。当然还有更直接的方法
我这样做的原因是我通过一个包(跨活动)传递对此目录的引用(因为它包含的文件)。如果有更好的方法,我愿意接受建议
不幸的是,建议的答案(getAbsoluteDir)实际上返回了一个新文件,使用与提供的文件相同的路径
那么,您可以跳过lister
行,改用mydir.list()
。但是,那里的代码不会“返回”任何东西--list()
返回目录中的文件,在这个答案中,它显示了对该列表的迭代
如何使用该字符串名称列出驻留在该子目录中的文件
您可以使用:
File dir=getDir(whateverYourStringNameIs);
dir.list();
或:
基本上,在您的目录中获取一个文件
对象(您已经知道如何获取该对象,正如您在一个目录中调用的mkdir()
),然后调用list()
获取内容。一旦有了文件
对象,剩下的就是标准的JavaI/O
我这样做的原因是我通过一个包(跨活动)传递对此目录的引用(因为它包含的文件)
假设这些都是您自己的活动,您可以调用文件上的getAbsolutePath()
,为您的Bundle
获取字符串。然后,在另一端,使用新文件(bundle.getString(“whateverYouCalledIt”)
重新构造文件
对象。或者,在捆绑包中传递一个字符串,该字符串表示应用程序内部存储部分中的相对路径,并与getDir()
或getfiledir()
一起使用,以构建指向该路径的文件
对象
不幸的是,建议的答案(getAbsoluteDir)实际上返回了一个新文件,使用与提供的文件相同的路径
那么,您可以跳过lister
行,改用mydir.list()
。但是,那里的代码不会“返回”任何东西--list()
返回目录中的文件,在这个答案中,它显示了对该列表的迭代
如何使用该字符串名称列出驻留在该子目录中的文件
您可以使用:
File dir=getDir(whateverYourStringNameIs);
dir.list();
或:
基本上,在您的目录中获取一个文件
对象(您已经知道如何获取该对象,正如您在一个目录中调用的mkdir()
),然后调用list()
获取内容。一旦有了文件
对象,剩下的就是标准的JavaI/O
我这样做的原因是我通过一个包(跨活动)传递对此目录的引用(因为它包含的文件)
假设这些都是您自己的活动,您可以调用文件上的getAbsolutePath()
,为您的Bundle
获取字符串。然后,在另一端,使用新文件(bundle.getString(“whateverYouCalledIt”)
重新构造文件
对象。或者,在包中传递一个表示应用程序内部存储部分中的相对路径的字符串,并将其与getDir()
或getfiledir()
一起使用,以构建指向该路径的文件
对象。非常感谢您的详细回答。是的,我已经尝试过getDir(它似乎需要第二个arg,读/写perms的int模式),但我无法让它工作——很抱歉没有提到这一点。但后来我尝试了你的第二个选择——构造一个传入目录名的新文件对象——它成功了!不确定getDir为什么不工作。PS:如果这是一本Commonware书籍的作者,那么你的书是我要买的Android书籍列表中的第一本——我几天前刚开始在Android上使用Java(以前在Android上使用过Lua和Python)。@EricS.Bullington:“我无法让它工作”——我几乎坚持使用getFilesDir()
或其他特定方法(例如,getDatabasePath()
)“如果这是Commonware图书的作者”--那就是我。“你的书在我要购买的Android图书列表的顶部”--谢谢!:-)非常感谢你的详细回答。是的,我已经尝试过getDir(它似乎需要第二个arg,读/写perms的int模式),但我无法让它工作——很抱歉没有提到这一点。但后来我尝试了你的第二个选择——构造一个传入目录名的新文件对象——它成功了!不确定getDir为什么不工作。PS:如果这是一本Commonware书籍的作者,那么你的书是我要买的Android书籍列表中的第一本——我几天前刚开始在Android上使用Java(以前在Android上使用过Lua和Python)。@EricS.Bullington:“我无法让它工作”——我几乎坚持使用getFilesDir()
或其他特定方法(例如,getDatabasePath()
)“如果这是Commonware书籍的作者”--那就是我。“你的书在我要购买的Android书籍列表中名列第一”--谢谢!:-)