f这里的files != null代表什么?文件不为空?那么用file.exists不是更好吗?

来源:2-2 遍历目录

福工刘德华

2017-11-22 14:31

File files[] = dir.listFiles();// 返回的是直接子目录(或者文件)的抽象

if (files != null && files.length > 0) {

for (File wenjian : files)

if (wenjian.isDirectory()) {

// 递归

listDirectory(wenjian);

} else {

System.out.println(wenjian);

}

}

}


写回答 关注

3回答

  • 慕田峪3134475
    2017-11-22 16:23:43
    已采纳

    files是返回的File类型数组,file是数组中的元素

    需要先判断数组是否为空(files.length >0),而files != null只是更周全的写法,在这个示例里面其实是可以不用写的,因为上面已经判断了dir的存在

    慕田峪313...

    很抱歉,​我重新看了下视频内容,发现之前我的说法是错误的。files != null 这个判断不能少

    2017-11-23 10:39:08

    共 2 条回复 >

  • 丑丶小亚
    2018-02-08 14:45:10

    if (files != null && files.length > 0)

    这句判断完全可以不写,因为foreach的循环行为,内部已经判断了files的length为0,或者为null的情况,已经进行了排除。

    不过在别的情况下,使用对象还是要科学判断对象是否为null,这是一个编程好习惯。

    丑丶小亚 回复慕姐9367...

    这就有点较之了,我针对本实例进行的这样说明,对于本实例来说只有存在dir或者不存在dir的情况,不存在向上抛出异常,那你下面的判断排除行为,有什么意义?存在就更不可能有null数组的情况。代码是死的,人的活的。

    2018-04-17 14:30:29

    共 2 条回复 >

  • 慕田峪3134475
    2017-11-23 10:45:13

    http://img.mukewang.com/5a1635060001854615920722.jpg

    红框中的dir这个File类型对象对应的是目录,因为这个dir在调用构造函数的时候传入的参数是某个目录的路径。

    File类型的对象还可以是具体的某个文件,这就需要在调用构造函数的时候传入的参数是具体文件的路径,比如

     File dir = new File("e:\\javaIO\\test.txt")

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题