내 앱의 일부로 특정 폴더 만 나열하는 파일 브라우저가 있어야합니다. 예를 들어 어떤 레벨의 하위 폴더에있는 이미지 파일의 경로에있는 폴더 만 나열하십시오.android 이미지가있는 모든 폴더를 나열하십시오.
재귀를 사용하여 할 수 있습니다. 그러나 성능에 영향을 미칩니다. 특히 최상위 수준에서 폴더를 찾는 경우 많은 재귀 호출이 필요합니다. 이
내가 재귀 검색 이외의 다른 방법이 있는지 알고 싶어
public List<GeneralFileItem> getGridItemsList(String root) {
List<GeneralFileItem> gridItemsList = new ArrayList<GeneralFileItem>();
File file;
file = new File(root);
File list[] = file.listFiles();
if (list.length == 0) {
return null;
}
for (int i = 0; i < list.length; i++) {
GeneralFileItem item = new GeneralFileItem();
File temp_file = new File(file.getAbsolutePath(), list[i].getName());
if (hasPhoto(temp_file)) {
item.setPath(file.getAbsolutePath() + "/" + list[i].getName());
item.setName(list[i].getName());
if (temp_file.listFiles() != null) {
item.setType(GeneralFileItem.DIRECTORY_TYPE);
} else {
item.setType(GeneralFileItem.FILE_TYPE);
}
gridItemsList.add(item);
//Log.i(TAG,"added"+list[i].getName());
}
}
return gridItemsList;
}
private boolean hasPhoto(File temp_file) {
//Log.i(TAG,temp_file.getName());
if (temp_file.listFiles() == null) {
if (temp_file.getName().toUpperCase().endsWith(("JPG"))) {
//Log.i(TAG,temp_file.getName()+ "is a photo");
return true;
} else
return false;
}
else{
File list[] = temp_file.listFiles();
for (int i = 0; i < list.length; i++) {
if(hasPhoto(list[i]))
return true;
}
}
return false;
}
아래에 내 코드를 참조하시기 바랍니다 할 수있는 더 좋은 방법이 있나요. Android에서 파일은 어떻게 유지됩니까? 나는 다양한 파일 시스템이 지원되며 하드웨어 제조사와 다르다는 것을 알고있다. 나는 모든 .jpg 파일을 얻을 수있는 FileTable이있는 것과 같은 방법이 있는지 알고 싶습니다.
시도가 사용하는 경우
지금은 alFolders에 다른 파일 []를 추가 할 수 있습니다 http://docs.oracle.com/javase/1.4.2/docs/api/java/io /FilenameFilter.html .... –
답장을 보내 주셔서 감사합니다. 제안한 filenamefilter 인터페이스는 모든 이미지 파일을 현재 디렉토리로 가져 오는 데 유용합니다. 내 요구 사항은 모든 수준에서 하위 폴더 중 하나에 최소한 하나의 이미지가있는 모든 디렉토리를 얻는 것입니다. – png
이 링크를 확인하십시오. 도움이 될 수 있기를 바랍니다. http://stackoverflow.com/questions/4195660/get-list-of-photo-galleries-on-android –