필터링 해야할 일이 생겨서 해봤습니다.

File클래스에는 list()메소드가 2개가 있습니다.
하나는 해당 디렉토리에서 모든 파일 리스트를 리턴하는 메소드입니다.
다른 하나는 필터링을 할 수 있게 FilenameFilter를 파라메터로 받는 list메소드가 있습니다.

두번째 것을 이용해서 원하는 파일을 필터링 할 수 있습니다.

FilenameFilter는 Interface입니다. 그래서 accept메소드를 구현하면 됩니다. 이 메소드에서 true값을 가지게 하는 값만이 String[]으로 반환이 됩니다.


import java.io.File;
import java.io.FilenameFilter;

public class FileFilterTest {

public static void main(String[] args)
{
File file = new File("D:/");
String[] list = file.list(new FilenameFilter()
{
@Override
public boolean accept(File dir, String name)
{
return name.endsWith(".mp3");
}
});

for (int i = 0; i < list.length; i++)
{
System.out.println(list[i]);
}
}
}


01. War.mp3
01_Be.mp3
01 ) 나를 보낸다.mp3
더 크로스 3집 ['07 The Cross]- 01 Love Song.mp3

음.....잘되는군요. 저 accept함수를 잘만 구현하면 원하는 형태로 구현할 수 있는 것 같습니다.

  1. 그렇죠잉~~
    FilenameFilter를 상속받아서.. 문자열을 넘기던.. 정규식을 넘기던.. accept 부분에서 적용해주면 되는거니까요...

  2. shinluckyk

    옷 안드로이드 SD카드에서 긁어드리는데 잘 참고할꼐요! ㅎ

[로그인][오픈아이디란?]

submit