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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈欢 中级黑马   /  2012-7-19 12:50  /  1324 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈欢 于 2012-7-20 00:43 编辑

import java.io.*;
public class Test {
    public static void main(String args[]){
        if(args.length==0)args=new String[]{".."
    };
        try
        {
            File pathName =new File(args[0]);
            String[] fileName =pathName.list();
            for(int i=0;i<fileName.length;i++){
                File f=new File (pathName.getPath(),fileName);
                if(f.isDirectory())
                {
                    System.out.println(f.getCanonicalPath());
                    main(new String[]{  f.getPath()});// 这句话就是简单的获取文件路径吗,还有其他的含义吗,不太懂                    
                     
                }
            }
        }catch(IOException e)
        {
            e.printStackTrace();
        }
}}

4 个回复

倒序浏览
getPath()
          将此抽象路径名转换为一个路径名字符串。
看看JDK就知道了
回复 使用道具 举报
main方法只是个普通的成员静态方法。
if(f.isDirectory()) 这是递归调用的方法,,这种递归调用就是解决这种树状数据结构数据遍历的解决方案。上面的for循环找到一个目录下的所有文件和目录,如果遇到了一个目录,则进入这个目录中,在调用相同的方法继续遍历这个目录中的所有成员。 你可以再看看斐波那契数列的案例。比较详细。
回复 使用道具 举报
f.getPath()
API:将此抽象路径名转换为一个路径名字符串
不过是根据你输入路径的相对路径
而getAbsolutePath()是绝对路径
回复 使用道具 举报
首先给楼主整理了下代码
  1. package IOStudy;

  2. import java.io.*;
  3. public class Test {
  4.     public static void main(String args[]){
  5.         if(args.length==0)
  6.                 args=new String[]{".."};
  7.         try
  8.         {
  9.             File pathName =new File(args[0]);
  10.             String[] fileName =pathName.list();
  11.             for(int i=0;i<fileName.length;i++){
  12.                 File f=new File(pathName.getPath(),fileName[i]);//这儿调用的是File的public File(File parent, String child)构造方法
  13.                                                                                    //根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
  14.                 if(f.isDirectory())
  15.                 {
  16.                     System.out.println(f.getCanonicalPath());
  17.                     main(new String[]{f.getPath()});// public String getPath()将此抽象路径名转换为一个路径名字符串。
  18.                                            //所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。 返回: 此抽象路径名的字符串形式                 
  19.                      
  20.                 }
  21.             }
  22.         }catch(IOException e)
  23.         {
  24.             e.printStackTrace();
  25.         }
  26. }
  27. }
复制代码
函数中调用静态方法main(),其中传入一个标识文件路径的字符串,通过for循环递归遍历目录下的文件和目录
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马