2014년 8월 6일 수요일

[Android] 특정 경로에 있는 이미지파일 목록을 불러오자


이번 액자위젯을 만들면서 필요했던 기능중에 또 하나가 있는데
그것은 바로 특정폴더에 존재하는 이미지파일들 목록을 구하는 것이였습니다.
사진을 선택하는데 괜시리 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 확장자를 갖는다던가 할 수 있으니
실제파일형식이 다를경우 크리티컬한 문제가 발생할 수 있는 경우라면
주의하시기 바랍니다.

댓글 없음:

댓글 쓰기