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