Java-Windows 7读取文件并将其写入列表



基本上,我想做的是从windows机器的特定路径读取所有文件,例如"C:\"。将所有文件读取到文件数组后,我在for循环中检查文件是否是目录。我还过滤掉了隐藏的文件。之后,我对2个数组列表中的每一个进行排序,如果当前目录不是根目录,则添加"../",并将所有内容写入最终的数组列表。

但问题是,我认为这个java程序显示的目录比现有目录多。因为"C:\>dir"的windows cmd shell的输出与我的java程序的输出不同。

有什么办法解决的吗?

"C:\>dir"的输出:

{ "PerfLogs", "Program Files", "Program Files(x86)", "Users", "Windows" }

此java程序的输出:

{ "Documents and Settings", "Dokumente und Einstellungen", "PerfLogs", "Program Files(x86)", "Program Files", "Users", "Windows", "pagefile.sys" }

private void getFileBrowser(String dirPATH) {
    ITEM_TEMP = new ArrayList<String>();
    PATH_TEMP = new ArrayList<String>();
    ITEM_TEMP.clear();
    PATH_TEMP.clear();
    currentWorkingDirectory = dirPATH;
    File f = new File(dirPATH);
    File[] files = f.listFiles();
    for(int i=0; i < files.length; i++) {
        File file = files[i];
        if(file.isDirectory()) {
            if(!file.isHidden() & !file.getName().startsWith("$")) {
                PATH_TEMP.add(file.getPath());
                ITEM_TEMP.add(file.getName() + "/");
            }
        }
        else {
            if(!file.isHidden()) {
                PATH_TEMP.add(file.getPath());
                ITEM_TEMP.add(file.getName());
            }
        }
    }
    Collections.sort(ITEM_TEMP);
    Collections.sort(PATH_TEMP);
    ITEM.clear();
    PATH.clear();
    if(!dirPATH.equals(rootDirectory)) {
        ITEM.add("../");
        PATH.add(f.getParent());
    }
    for(int i=0; i < ITEM_TEMP.size(); i++) {
        ITEM.add(ITEM_TEMP.get(i));
    }
    for(int i=0; i < PATH_TEMP.size(); i++) {
        PATH.add(PATH_TEMP.get(i));
    }
}

看起来Java代码正在打印每个文件(pagefile.sys在系统中默认情况下应该隐藏)。你说你想过滤掉隐藏的文件。

问题可能在于这一行:

 if(!file.isHidden() & !file.getName().startsWith("$"))

&是按位AND运算符,则应使用&amp-逻辑AND运算符。

最新更新