Reputation: 4044
I have an ArrayList with directories and files. I need filtering it and get ArrayList with files only:
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]
How to filter ArrayList?
Upvotes: 0
Views: 149
Reputation: 83018
Iterate all elements of ArrayList
and check if element is File
.
Like below
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;
Now fileList contains only those elements which are files.
If you want to remove File
from original List
(Without using temp List
), use below code
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;
}
}
Upvotes: 1
Reputation: 334
Just use isFile() method to distinguish between normal files and directories. Also look at the similiar isDirectory() method.
Upvotes: 1