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 に答える