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