如何从ArrayList <file>?</file>中排除目录

时间:2013-10-21 10:15:57

标签: android arraylist

我有一个包含目录和文件的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?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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(不使用临时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; 
    }
}