基本上,我想做的是从我的 Windows 机器的特定路径读取所有文件,例如“C:\”。将所有文件读取到文件数组后,我在 for 循环中检查文件是否为目录。我也在过滤掉隐藏文件。之后,我对 2 个数组列表中的每一个进行排序,如果当前目录不是根目录,则添加“../”并将所有内容写入最终数组列表。
但问题是——我认为,这个 java 程序向我显示的目录比目录多。因为 "C:\> dir" 的 windows cmd shell 的输出与我的 java 程序的输出不同。
任何想法如何解决这个问题?
“C:\> 目录”的输出:
{ "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));
}
}