java - 当文件是目录时,文件 isDirectory() 给出 false

标签 java android file

在我的 fragment 中,我有文件和文件夹列表,还有一个用于文件位置的 onclick 监听器。我试图只打开目录而不是文件,但我的方法 isDirectory() 总是给我错误,即使文件是目录也是如此。

我的代码

void fileList(String s) {
    currentPath = s;
    items = new ArrayList<String>();
    path = new ArrayList<String>();
    File f = new File(s);
    File[] files = f.listFiles();

    for(int i = 0; i < files.length; i++) {
        File file = files[i];

            if(!file.isHidden() && file.canRead()) {
            path.add(file.getPath());

            if(file.isDirectory()) {
                items.add(file.getName() + "/");
            }

            else {
                items.add(file.getName());
            }
        }
    }
    MyAdapter adapter = new MyAdapter(getActivity(), R.layout.row, items);
    ListView myList = (ListView) view.findViewById(R.id.list);
    myList.setAdapter(adapter);
    myList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            File f = new File(items.get(arg2));
            if(f.isDirectory()) { // <-its always give me false here;
                fileList(path.get(arg2));
            }
            else {
                return;
            }
        }
    });
}

最佳答案

File f = new File(items.get(arg2));
if(f.isDirectory()) { // <-always false because it is a new File...

使用完整路径创建文件,而不仅仅是名称,或者它正在使用目录名称在您的位置创建一个新的空文件,而不是指向目录...

File f = new File(path.get(arg2) + "/" + items.get(arg2));
if(f.isDirectory()) { // <-now it will perform the check;

检查您是否需要额外的 Slash,它未经测试。

关于java - 当文件是目录时,文件 isDirectory() 给出 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824804/

相关文章:

java - 如何向后打印文件内容?

java - 不考虑大小写来定位文件?

java - RX Java Single 未从 Single.merge 返回

android - 确定自上次用户在 Android 中 Activity 以来的时间

java - Docker 容器运行一台计算机而不是另一台计算机

android - 获取可与 Cloud Firestore 配合使用的简单应用

java - KitKat 上的按钮文本消失(API 级别 19)

file - Golang 将服务文件的名称传达给浏览器/客户端

java - 如何在Spring boot中加载没有任何文件扩展名的配置文件

java - jQuery-File-Upload with Java Play Framework NetworkError : 500