Android:isDirectory()总是返回true

时间:2012-10-03 00:37:18

标签: java android

我尝试了here,但没有帮助。

我的文件名过滤器只能获取目录和.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 个答案:

答案 0 :(得分:2)

传递的File dir是包含实际文件的目录,因此它始终是一个目录。您拥有的完整档案是%dir%/%name%。我相信如果整个文件是一个目录,名称将是“/”或者可能为null。

您还可以通过new File(dir, name);

创建完整文件