Android-Android下怎么遍历assets录下的子文件夹?

Android-Android下怎么遍历assets录下的子文件夹?

甜柠檬 发布于 2017-08-04 字数 213 浏览 1031 回复 2

我需要遍历assets目录下的一个子文件夹里面的文件,并且获得他们的文件名(例如:"assets/a/"这个目录下的所有文件名).实际上就是获取他们的路径,保存起来,方便调用.不知道要怎么去获取这个子文件夹的文件名?
求大侠指导

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-10-24 2 楼

遍历文件夹可以有2中方式:

A.不使用递归:

import java.io.File;
import java.util.LinkedList;
public class FileSystem {
public static void main(String[] args) {

long a = System.currentTimeMillis();

LinkedList list = new LinkedList();
File dir = new File("c:\java\");
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
File tmp;
while (!list.isEmpty()) {
tmp = list.removeFirst();
if (tmp.isDirectory()) {
file = tmp.listFiles();
if (file == null)
continue;
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
} else {
System.out.println(tmp.getAbsolutePath());
}
}

System.out.println(System.currentTimeMillis() - a);
}
}

B.使用递归:

import java.io.File;
import java.util.ArrayList;
public class FileSystem1 {
private static ArrayList filelist = new ArrayList();

public static void main(String[] args) {

long a = System.currentTimeMillis();
refreshFileList("c:\java");
System.out.println(System.currentTimeMillis() - a);
}
public static void refreshFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();

if (files == null)
return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
refreshFileList(files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath().toLowerCase();
System.out.println("---"+strFileName);
filelist.add(files[i].getAbsolutePath());
}
}
}
}

补充说明一下,两种方式性能略有差异。我在不同的系统上运行,耗时也不大一样,有时候第一种方式性能好些,有时候第二种方式性能好些,所以对于两个方法的性能评判,还得进一步验证。

夜无邪 2017-08-04 1 楼

AssetManager中有个list()方法,传入你的子文件名称即可:

String[] flLists=this.getAssets().list("your_subdir");

如果是根目录,那么就是这么写:

AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}