0

我有一个包含目录和文件的 ArrayList。我需要过滤它并仅获取带有文件的 ArrayList:

ArrayList<File> list = new ArrayList<File>();
list.add(new File("/sdcard/dir1/"));
list.add(new File("/sdcard/file1.txt"));
list.add(new File("/sdcard/file2.jpeg"));
list.add(new File("/sdcard/dir2/"));

// Filter directories here (???)

// ArrayList after: [/sdcard/file1.txt, /sdcard/file2.jpeg]

如何过滤 ArrayList?

4

2 回答 2

1

只需使用isFile()方法来区分普通文件和目录。另请查看类似的isDirectory()方法。

于 2013-10-21T10:22:27.683 回答
1

迭代所有元素ArrayList并检查元素是否为File.

像下面

int sizeOfList = list.size(); 
ArrayList<File> fileList = new ArrayList<File>();
for (int position = 0; position < sizeOfList; position++) {
    if (list.get(position).isFile()) {
        fileList.add(list.get(position)); 
    }
}
list = fileList;

现在 fileList 只包含那些是文件的元素。


如果File要从原始文件中删除List(不使用 temp List),请使用以下代码

int sizeOfList = list.size(); 
for (int position = 0; position < sizeOfList; position++) {
    if (! list.get(position).isFile()) { //OR list.get(position).isDirectory()
        list.remove(position); 
        position = position - 1;
        sizeOfList = sizeOfList - 1; 
    }
}
于 2013-10-21T10:23:35.550 回答