我在命令行参数指定一个目录名,打印输出该目录下的所有文件和子目录名,
判断如果是文件,则打印时在文件名前加上"File : "
如果是目录,则打印时在文件名前加上"Directory : "可为什么没打印出我想要的结果呢
import java.io.*;
public class SumFileSize
{
public static int size = 0;
public static void main(String[] args)
{
if (args.length == 0)
{
System.out.println("Please input a directory name.");
return;
}

File f = new File(args[0]);
if (!f.isDirectory())
throw new IllegalArgumentException("不是目录");

String[] files = f.list();
File ff = null;

for (int i = 0; i < files.length; i++)
{
ff = new File(files[i]);
System.out.println(ff.getName());
if (ff.isFile())
{
System.out.println("file : " + ff.getName());
}
else if (ff.isDirectory())
{
System.out.println("directory : " + ff.getName());
}
}
}
}打印出来这样的结果:
G:\learnjava>java SumFileSize myconsole
ReadDoubleTest.class
file : ReadDoubleTest.class
Console.class
ReadDouble.class
aa可我想要的结果是:
G:\learnjava>java SumFileSize myconsole
File : ReadDoubleTest.class
File : Console.class
File : ReadDouble.class
Directory : aa

解决方案 »

  1.   

    String[] files = f.list(); 这样获取的只是文件名,没有路径,所以你应该别外获取路径
    eg:
    String path=f.getPath()+System.getProperty("file.separator");
    for (int i = 0; i < files.length; i++)
    {
    ff = new File(path+files[i]);
                        ……
      

  2.   

    注释掉System.out.println(ff.getName());
    打印结果正常
      

  3.   

    ff = new File(args[0],files[i]);
      

  4.   

    (1)注释掉System.out.println(ff.getName());
    则只打印出正确的文件,目录根本就不打印了。(2)我想打印当前目录下的文件及子目录的名称应该如何改?谢谢。
      

  5.   

    我把代码改了一下:
    for (int i = 0; i < files.length; i++)
    {
    ff = new File(System.getProperty("user.dir"),files[i]);
    if (ff.isFile())
    {
    System.out.println("file : " + ff.getName());
    }
    else if (ff.isDirectory())
    {
    System.out.println("directory : " + ff.getName());
    }
    }还是没打印出来指定目录下的子目录的名称。:(
    还请各位高人指教呀。