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

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

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

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

[code]
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]);
        }
    }
}
[/code]
[code]
01. War.mp3
01_Be.mp3
01 ) 나를 보낸다.mp3
더 크로스 3집 ['07 The Cross]- 01 Love Song.mp3
[/code]
음.....잘되는군요. 저 accept함수를 잘만 구현하면 원하는 형태로 구현할 수 있는 것 같습니다.

 
Posted by 머드초보

댓글을 달아 주세요

  1. 2009.05.27 15:35  댓글주소  수정/삭제  댓글쓰기

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

  2. BlogIcon shinluckyk 2010.04.01 22:58  댓글주소  수정/삭제  댓글쓰기

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