Как перечислить все файлы (с расширением и без расширения) в определенном каталоге

В настоящее время я могу получить все файлы с определенным расширением

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);
          }
        }
Другие вопросы по тегам