BArtWell
BArtWell

Reputation: 4044

How to exclude directories from ArrayList<File>?

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

Answers (2)

Pankaj Kumar
Pankaj Kumar

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

Andrew
Andrew

Reputation: 334

Just use isFile() method to distinguish between normal files and directories. Also look at the similiar isDirectory() method.

Upvotes: 1

Related Questions