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

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 머드초보
,
 
오늘도 삽집을 하고 있는데요.

AIR에서는 File이라는 클래스를 사용할 수 있더군요.
File클래스를 자세히 보면 FileReference클래스를 상속받고 있어요.
기존에 Flash나 Flex Application에서는 보안상 문제로 파일을 Browse()를 통해서 선택이 되어도 전체경로는 나오지 않습니다. FileReference속성에는 name이라는 속성이 있는데 읽기 전용이며 Browse()통해 파일이 선택이 되면 name속성에는 파일 이름만 들어갑니다.
(어느 플래시카페를 보니까 자바스크립트로 가져오는 법을 올려놨더라구요^^)

하지만, File이라는 클래스는 nativePath라는 속성을 제공하는데 이건 전체경로까지 다나옵니다.
단, AIR에서만 됩니다-_-;

저도 전체 경로가 필요해서 찾고 있었는데 이렇더라구요 ^^
AIR에서는 FileReference를 사용하지 말고, File을 사용하세요.
그대로 상속받고 있기 때문에 다 사용할 수 있구요.
기능도 더 추가된 것 같은데-_-; 아...로컬에 있는 파일을 컨트롤 할 수 있을 껍니다 ^^

뭐 결론은 AIR에서는 File을 쓰고, Flex나 Flash에서는 FileReference(뭐 File클래스를 여기서 사용할 수 없습니다^^)를 사용해요 ^^

혹시 AIR로 뭔가 하려는 분중에 FileReference에서 전체경로를 찾고 계신 분이 있을 것 같아서 올려요^^
 
Posted by 머드초보
,