A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 水蓝 于 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

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


评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

1 个回复

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

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马