[android] 특정 확장자 파일 목록 가져오기

특정 확장자를 가진 파일 목록을 가져와야하는데, 찾아보니 폴더를 다 돌아다니는 코드 밖에 안 나온다. 왠지 있을 줄 알았는데…

 

이렇게 찾을 확장자 이름을 정한다.

private static final ArrayList<String> EXTENSIONS = new ArrayList<>(Arrays.asList(".gpx", ".tcx", ".kmz", ".kml"));

 

 

 

재귀호출로 각 폴더를 도는 메소드를 만든다.

private ArrayList<String> extensionFilter(File folder) {
  ArrayList<String> result = new ArrayList<>();

  File[] files = folder.listFiles();

  if (files != null) {
    for (File file : files) {
      if (file.isDirectory()) {
        result.addAll(extensionFilter(file));
      }
      else {
        if (EXTENSIONS.contains(file.getName().substring(file.getName().lastIndexOf(".")))) {
          result.add(file.toString());
        }
      }
    }
  }

  return result;
}

 

 

이렇게 하면 알아서 다 가져온다.

ArrayList<String> files = extensionFilter(Environment.getExternalStorageDirectory());