티스토리 뷰



이번 액자위젯을 만들면서 필요했던 기능중에 또 하나가 있는데

그것은 바로 특정폴더에 존재하는 이미지파일들 목록을 구하는 것이였습니다.

사진을 선택하는데 괜시리 txt파일같은걸 골라봤자 (에러는 안나지만) 빈 사진만 나타나고

그런 파일들이 많으면 사진을 선택할 때 지저분하니까요.

 

 

바로 소스 설명으로 넘어가겠습니다.

 //1. 이미지파일 목록을 불러올 경로를 구한다.

    String path = Environment.getExternalStorageDirectory().getAbsolutePath() +

      File.separator + "ImageList" + File.separator;

  //path에는 "sdcard/ImageList/" 와 같은 값이 들어갑니다.

 

//2. 경로를 이용해 File 객체를 생성한다.

 File list = new File(path);

 

//3. list객체에서 이미지목록만 추려 낸다.

 String[] imgList = list.list(new FilenameFilter() {

   public boolean accept(File dir, String filename) {

     Boolean bOK = false;

     if(filename.toLowerCase().endsWith(".png")) bOK = true;

     if(filename.toLowerCase().endsWith(".9.png")) bOK = true;

     if(filename.toLowerCase().endsWith(".gif")) bOK = true;

     if(filename.toLowerCase().endsWith(".jpg")) bOK = true;

 

     return bOK;

   }

 });

 //toLowerCase : 소문자로 변환

 //endsWith() : 끝의 문자가 ()안의 문자와 같은지 판별해서 Boolean형으로 리턴한다.

 //파일목록중 png, 9.png, gif, jpg 확장자를 가진 파일들 목록만 imgList에 저장된다.     

 

FilenameFilter 안의 내용만 조금 바꾸면

문서파일 목록 구하기,

동영상파일 목록 구하기 등 응용 가능합니다.

 

다만 확장자로만 판별하는 것이라

문서파일인데 파일이름만 바꿔서 jpg 확장자를 갖는다던가 할 수 있으니

실제파일형식이 다를경우 크리티컬한 문제가 발생할 수 있는 경우라면

주의하시기 바랍니다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함