1

有人问过这个问题,但没有提出可行的答案。有人在这里问并回答了类似的问题:如何从内部存储的特定文件夹中获取文件列表? 不幸的是,建议的答案 ( getAbsoluteDir) 实际上使用与提供的文件相同的路径返回一个文件。

所以又是这样:我有用于创建子目录(使用file.mkdir())的字符串名称,该子目录位于我的应用程序的私有内部存储(/data/data/come.my.app/file)中。如何使用该字符串名称列出驻留在该子目录中的文件?我能想出的唯一方法是File通过遍历该应用程序目录中的所有子目录来从子目录名称中获取子目录的对象。当然还有更直接的方法...

我这样做的原因是我通过一个包(跨活动)传递对这个目录的引用(因为它包含的文件)。如果有更好的方法可以做到这一点,我愿意接受建议。

4

1 回答 1

4

不幸的是,建议的答案(getAbsoluteDir)实际上使用与提供的文件相同的路径返回一个新文件。

好吧,您可以跳过该lister行,mydir.list()而是使用。但是,那里的代码不会“返回”任何东西——list()返回目录中的文件,在那个答案中,它显示了对该列表的迭代。

如何使用该字符串名称列出驻留在该子目录中的文件?

您可以使用:

File dir=getDir(whateverYourStringNameIs);

dir.list();

或者:

File dir=new File(getFilesDir(), whateverYourStringNameIs);

dir.list();

基本上,File在您的目录上获取一个对象(您已经知道如何获取,正如您调用mkdir()的那样),然后调用list()以获取内容。一旦有了File对象,剩下的就是标准的 Java I/O。

我这样做的原因是我通过一个包(跨活动)传递对这个目录的引用(因为它包含的文件)。

假设这些都是你自己的活动,你可以呼吁getAbsolutePath()FileString你的Bundle. 然后,在另一边,使用new File(bundle.getString("whateverYouCalledIt"))重构File对象。或者,传入Bundle 代表应用程序内部存储部分中的相对路径的字符串,并将其与getDir()or一起使用getFilesDir()来构建File指向同一路径的对象。

于 2013-07-27T14:37:04.070 回答