日期:2014-05-18  浏览次数:20970 次

如何使用java编程实现linux下所有文件目录的遍历?
继http://topic.csdn.net/u/20080628/09/d144f106-3b69-4b5c-a67a-6ad59c6a7d4f.html?seed=339406413
帖子之后,再次发帖,寻求帮助,把上个帖子的第二个问题拿过来讨论,100分在此寻求问题答案。

如题:
如何使用java编程实现linux下所有文件目录的遍历?
我已经从网上找到了一个在windows下以树的形式显示硬盘信息的java源码,但是打包后放到linux运行,只显示一个域名信息,并不能显示分区目录信息,后来看了看源码才发现,那个程序是专门为windows写的,而对于java我又是个初学者,所以根本不知道从哪里下手修改,把关键部分代码贴出来,希望高手能相助,在此表示感谢。
  private TreeNode iterateDisk() throws UnknownHostException {
  // get machine name
  InetAddress local = InetAddress.getLocalHost();
  // create root
  DefaultMutableTreeNode root = new DefaultMutableTreeNode(
  local.getHostName());

  // first try all drives - windows only
for (char label = 'A'; label < 'Z'; label++) {
File driveFile = new File(label + ":\\");
if (driveFile.exists()) {
DefaultMutableTreeNode driveNode = new DefaultMutableTreeNode(
new MyFile(driveFile));
iterateDir(driveFile, driveNode);
root.add(driveNode);
}
}  
  return root;
  }

------解决方案--------------------
这东西很多都还不懂。
iterateDir(driveFile, driveNode); 这个方法具体是怎么写的,怀疑就在iterateDir方法里面能找到你想要修改的地方
------解决方案--------------------
且不说楼主贴的代码不知道啥意思,如果真要实现楼主说的遍历所有目录结构,估计你的iterateDir得递归调用本身,然后你的Tree对象是自己编写的么?希望它本身的添加节点方法没有问题

另外提供另外一条思路,楼主为什么不调用Linux系统命令来帮助你完成这个工作呢,写Shell脚本比程序轻松多了
如果我没猜错的化,Java类库中的FileChooser类就是调用系统命令来完成系统磁盘文件定位的,你可以看源代码参考一下
------解决方案--------------------
好像LINUX没有盘符吧
------解决方案--------------------
linux下从根目录[\]开始.根目录下全部都能遍历,如果有权限的话.

遍历linux下所有文件目录的遍历就难了.如果硬盘没有mount上去,在linux下是不能访问的.


------解决方案--------------------
Java code
File[] roots = File.listRoots();

------解决方案--------------------
建议看看递归算法
------解决方案--------------------
File driveFile = new File("/");