특정 확장자를 가진 파일 목록을 가져와야하는데, 찾아보니 폴더를 다 돌아다니는 코드 밖에 안 나온다. 왠지 있을 줄 알았는데…
이렇게 찾을 확장자 이름을 정한다.
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());