Android: isDirectory() всегда возвращает true

Я попробовал здесь, но это не помогло.

Фильтр файлов для получения каталогов и файлов .txt:

FilenameFilter filter = new FilenameFilter()
{
    public boolean accept(File dir, String name)
    {
        if (dir.isDirectory())
        {
            return true;
        }
        else
        {
            return dir.getName().endsWith(".txt");
        }
    }
};

Я тоже попробовал! dir.isFile()

Применение фильтра к списку файлов и каталогов:

            CurDir = homeDir;
            dir = new File(homeDir);
            values = dir.list(filter);
            if (values == null)
            {
                Toast.makeText(this, "No Files/Folders", Toast.LENGTH_LONG).show();
            }
            else
            {
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
                setListAdapter(adapter);
            }

Значение homeDir:

homeDir = Environment.getExternalStorageDirectory().toString();

Он все еще показывает .png и все другие файлы.

Ответ 1

Переданный File dir - это каталог, содержащий фактический файл, поэтому он всегда будет каталогом. Полный файл у вас есть% dir%/% name%. Я считаю, что имя будет "/" или, возможно, null, если общий файл является каталогом.

Вы также можете создать полный файл, выполнив new File(dir, name);