黑马程序员技术交流社区

标题: 关于用File的isHidden()方法对根目录的判断结果 [打印本页]

作者: 水蓝    时间: 2014-3-18 13:01
标题: 关于用File的isHidden()方法对根目录的判断结果
本帖最后由 水蓝 于 2014-3-25 22:56 编辑

刚写了个程序,遍历D盘根目录下的非隐藏文件:
  1. //想写个遍历D盘非隐藏文件的程序
  2. public class FileDemo {
  3.         public static void main(String[] args) {
  4.                 File file = new File("D:\\");
  5.                 browseFile(file);
  6.         }
  7.         
  8.         public static void browseFile(File file) {
  9.                 if(file.isDirectory() && !file.isHidden()) {
  10.                         File[] files = file.listFiles();
  11.                         for(File f : files) {
  12.                                 browseFile(f);
  13.                         }
  14.                 } else {
  15.                         System.out.println(file.getAbsolutePath());
  16.                 }
  17.         }
  18. }
复制代码
运行结果却是:
D:\

调试了一下,发现问题出在isHidden()方法上了。

对D盘根目录执行isHidden()方法:

  1. public class FileDemo {
  2.         public static void main(String[] args) {
  3.                 File file = new File("D:\\");
  4.                 System.out.println(file.isHidden());
  5.         }
  6. }
复制代码
运行结果却是:
true

能不能给解释一下,咋会这样呢?



作者: 无道    时间: 2014-3-18 15:29
(这是我在百度上搜的,我也不太清楚,希望能帮到你)盘符的隐藏属性并不是isHidden()方法所判定的。硬盘在进行分区的时候,对每个分区有一段单独的描述内容,而对文件夹和文件的格式的描述内容和硬盘分区的描述内容是不一样的。isHidden()方法是根据文件夹的格式进行判定,故在进行判定盘符的时候,该属性不能正常读取。希望对你有所帮助。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2