Java File类的问题

importjava.io.*;publicclassTestFileList{publicstaticvoidmain(Stringargs[]){Filef=newF... import java.io.*;
public class TestFileList {
public static void main (String args[]) {
File f= new File ("e:/Java Program/A");//创建出一个新的文件夹?
System.out.println (f.getName ());//getName()的作用是返回抽象路径父目录的路径名字符串,如果此路径名没有此指定的父目录,则返回null
tree (f,1); //方法调用,这里的level为1是因为之前输出了 A,所以传入1以缩进4个空格
// private static void tree (File f, int level){
// }
}
private static void tree(File f, int level) {
String preStr ="";//这个字符串的作用是控制缩进的空格数
for (int i=0;i<level;i++){
preStr+=" ";
}
File[] children= f.listFiles();//public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。如果此抽象路径名不表示一个目录,那么此方法将返回 null。
for (int i=0;i<children.length;i++){
System.out.println (preStr+children[i].getName());
if (children[i].isDirectory())//public boolean isDirectory()测试此抽象路径名表示的文件是否是一个目录。
tree(children[i],level+1);
}
}
}
/*
* System.out.println (preStr+children[i].getName()); 这是一个容易理解有问题的地方,比如紧跟A下的文件里面有B和file1
* 那么执行了这句话后B和file1.txt都将被输出,并且是换行输出的(为什么?)
* children[i].isDirectory();这个语句的作用是判断当前这个文件下还有没有子文件,如果有的话则继续调用tree(...)这个方法
*/
A
B
C
D
E
F
file3.txt
file2.txt
file1.txt
我想问的是1.这里File f= new File ("e:/Java Program/A");是不是调用了构造方法,和creatNewFile()有什么区别?2.为什么我写的private static void tree (File f, int level){ }不行,编译器帮我创建的这个方法和我写的好像没有什么不同啊。3.tree(children[i],level+1);这条语句里面level+1并没有改变level的值,为什么也能控制空格数啊?4.我的一些注解是不是正确的?
展开
 我来答
好求知
推荐于2016-06-05 · TA获得超过6515个赞
知道大有可为答主
回答量:966
采纳率:80%
帮助的人:1175万
展开全部
  1. File f = new File("e:/Java Program/A"); 实例化File对象,调用了构造方法,但只是设置了路径和初始化一些参数而已。

    creatNewFile()则是物理硬盘上新建一个文件。另外mkdir()和mkdirs()是创建文件夹。

  2. 问题2表述不是很清楚。

  3. tree(children[i],level+1);是递归调用,传入的level参数比父目录的level多1,也就是增加了一级缩进。

  4. getName()是获取文件名,getParent()才是父目录的路径字符串。

    System.out.println (preStr+children[i].getName()); 这句在for循环里面,遍历子文件数组,当然B和file1.txt都会被输出,println会打印换行的。

    children[i].isDirectory();isDirectory()是判断File对象是否是文件夹,不是判断是否有子文件。当然是文件夹是存在子文件的充分条件。即时是空文件夹,进一步递归tree方法时得到的子文件数组也是空的,不会抛出异常。

追问

就是我写的tree的方法是这样的,但是会报错,然后eclipse帮我写的tree方法和我的好像没什么区别啊

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式