gpt4 book ai didi

Java 认为 C :\drive is hidden?

转载 作者:行者123 更新时间:2023-11-30 09:34:10 27 4
gpt4 key购买 nike

我觉得还是先说明情况比较好。

情况

我正在编写一些软件来过滤 SetFile

过滤器如下:如果文件未隐藏,则将其添加到新的 Set

问题在于 File.isHidden() 的当前行为如下:

File f = new File("C:\Documents and Settings\Administrator\Local Settings\Temp\REG28E.tmp");
System.out.println(f.isHidden());

程序将输出false

文件本身 (REG28E.tmp) 实际上并未隐藏。相反,它的路径 中的某个文件夹是隐藏的(Local Settings)。

我想创建一些代码来检查:

如果文件路径上的某处被隐藏,则该文件被标记为隐藏。

我提出了以下解决方案来递归检查文件的路径:

boolean hidden = file.isHidden();
File parentFile = file.getParentFile();
while ((hidden == false) || (parentFile != null)) {
hidden = parentFile.isHidden();
parentFile = parentFile.getParentFile();
}

if (!hidden) {
acceptedFileList.add(file);
}

问题

最后,我们来解决问题。我永远无法到达实际添加文件的阶段。问题是 Java 认为 C:\驱动器本身 是隐藏的!

我可以做什么?

最佳答案

解决方案涉及添加手动检查以查看 parentFile 对象是否为根目录。

while ((hidden == false) && (parentFile != null)) {
// added the IF statement below:
if (FileSystemUtils.isRoot(parentFile)) {
hidden = false;
break;
}

hidden = parentFile.isHidden();
parentFile = parentFile.getParentFile();
}


检查是否是根目录

以上代码使用了 FileSystemUtils 类。它包含以下方法:

public static boolean isRoot(File file) {
File[] roots = File.listRoots();

for (File root : roots) {
if (file.equals(root)) {
return true;
}
}

return false;
}

感谢所有参与的人...

关于Java 认为 C :\drive is hidden?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com