我认为最好先说明情况。
情况
我正在编写一些过滤 a Set
of File
s 的软件。
过滤器如下:如果文件未隐藏,则将其添加到新的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:\ 驱动器本身是隐藏的!
我能做些什么呢?