Как перечислить все файлы (с расширением и без расширения) в определенном каталоге
В настоящее время я могу получить все файлы с определенным расширением
private List<String> getListFiles(File parentDir) {
ArrayList<String> inFiles = new ArrayList<String>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
}
else {
if (file.getName().endsWith(".jpg")||file.getName().endsWith(".jpeg")) {
inFiles.add(file.getAbsolutePath());
}
Log.d("fullpath", "full path is" + file.getAbsolutePath());
}
}
return inFiles;
}
Но в каталоге есть еще несколько файлов, которые не имеют расширения. Я хотел перечислить эти файлы также. Я попробовал этот метод. Но я не могу перечислить эти файлы.
String fileName=FilenameUtils.getBaseName(file.getName());
inFiles.add(fileName);
Как этого добиться? пожалуйста, помогите мне.
3 ответа
Вы проверяете расширения файлов в вашем коде. Если вы измените свой код таким образом, вы получите и другие файлы.
private List<String> getListFiles(File parentDir) {
ArrayList<String> inFiles = new ArrayList<String>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
}
else {
inFiles.add(file.getAbsolutePath());
}
}
return inFiles;
}
Вы можете использовать этот метод
private static void getListFiles(File mInputDir,ArrayList<File> mFilesExt,ArrayList<File> mFilesNoExt) {
File[] files = mInputDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
getListFiles(file,mFilesExt,mFilesNoExt);
}
else {
if (file.getName().contains(".")) {
mFilesExt.add(file);
}else{
mFilesNoExt.add(file);
}
}
}
}
и вызовите этот метод с вашим входным каталогом для сканирования и массивом файлов с / без расширения
File mInputDir = new File("/sdcard/Pictures/your_dir");
ArrayList<File> mFilesExt = new ArrayList<>();
ArrayList<File> mFilesNoExt = new ArrayList<>();
getListFiles(mInputDir,mFilesExt,mFilesNoExt);
Сначала сохраните все Filepath в одном массиве, затем попробуйте этот код:
if (arrayList_filenames.size() != 0) {
for(int count = 0;count<arrayList_filenames.size() !=0){
String extension = arrayList_filenames.get(count).toString().substring(arrayList_filenames.get(count).toString().lastIndexOf("."));
Log.d("displayingextension", "**** " + extension);
}
}