Перечислить все файлы с определенным расширением на устройстве
Я хочу найти все файлы, в моем случае PDF-файлы, на устройстве. Теперь я написал этот код:
File images = Environment.getExternalStorageDirectory();
mImagelist = images.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name)
{
return ((name.endsWith(".pdf")));
}
});
Этот код находит только один файл PDF /storage/emulated/0/HTC_One_WWE_User_Guide.pdf. У меня есть несколько других PDF-файлов в моей папке загрузки.
Как я могу решить это?
2 ответа
Спасибо Хуану.
public void recursiveScan(File f) {
File[] file = f.listFiles();
for (File ff : file) {
if (ff.isDirectory()) recursiveScan(f);
if (ff.isFile() && ff.getPath().endsWith(".pdf")) {
Log.d("Debug", ff.toString());
}
}
}
Вам просто нужно указать файл var, где искать.
Получить список файлов из каталога внешнего хранилища и повторить указанный список. Это должно позволить вам увидеть, соответствует ли расширение pdf, а затем добавить в список или что вы хотите сделать:
File[] file = Environment.getExternalStorageDirectory().listFiles();
for (File f : file){
if (f.isFile() && f.getpath().endswith(".pdf")) {
//Add to your list
}
}
Насколько я знаю, это не входит в каталоги, поэтому вам нужно обернуть его внутри метода и сделать что-то вроде f.isDirectory()
повторно вызвать метод, чтобы пройти через папку.
public void recursiveScan(File f) {
File[] file = f.listFiles();
for (File f : file){
if (f.isDirectory()) recursiveScan(f);
if (f.isFile() && f.getpath().endswith(".pdf")) {
//Add to your list
}
}
}
Который будет называться что-то вроде recursiveScan(Environment.getExternalStorageDirectory());
Отказ от ответственности: я не проверял это, поэтому некоторые вещи могут быть отключены, но это должно дать вам общее представление о том, как это сделать.