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书籍列表中名列第一”--谢谢!:-)