Որպես իմ հավելվածի մաս, ես պետք է ունենամ ֆայլերի դիտարկիչ, որը թվարկում է միայն կոնկրետ թղթապանակներ: Օրինակ՝ թվարկեք միայն այն թղթապանակները, որտեղ պատկերի ֆայլը գտնվում է իր ցանկացած ենթաթղթապանակում՝ ցանկացած մակարդակում:
Ես կարող էի դա անել՝ օգտագործելով ռեկուրսիա: Բայց դա ազդում է կատարողականի վրա: Հատկապես վերին մակարդակում թղթապանակներ գտնելու համար անհրաժեշտ են բազմաթիվ ռեկուրսիվ զանգեր: Կա՞ դա անելու ավելի լավ միջոց
Խնդրում եմ տես իմ կոդը ստորև
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-ում: Ես գիտեմ, որ տարբեր ֆայլային համակարգեր աջակցվում են, և դա տարբերվում է ապարատային արտադրողներից: Ես կցանկանայի իմանալ, արդյոք կա՞ այնպիսի միջոց, ինչպիսին կա FileTable-ը, որտեղից կարող եմ ստանալ բոլոր .jpg ֆայլերը: