问答详情
源自:2-2 遍历目录

总是抛出不是目录的异常

Exception in thread "main" java.lang.IllegalArgumentException: F:\example不是目录

at imooc.file.FileUtils.listDirectory(FileUtils.java:15)

at imooc.file.FileUtilTest1.main(FileUtilTest1.java:10)


package imooc.file;


import java.io.File;

import java.io.IOException;


//列出file类的一些常用的操作比如过渡,遍历等

public class FileUtils {

public static void listDirectory(File dir)throws IOException{

/*

* 列出指定目录下的所有文件*/

if(!dir.exists()){

throw new IllegalArgumentException("目录"+dir+"不存在");

}

if(dir.isDirectory()){

throw new IllegalArgumentException(dir+"不是目录");

}

// String[] filenames=dir.list();

// for(String string:filenames){

// System.out.println(string);

//如果要遍历子目录下的内容就需要构造成file对象做地柜操作,file提供了直接返回file对象的API

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

// for(File file:files){

// System.out.println(file);

// }

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

for(File file:files){

if(file.isDirectory()){

//递归

listDirectory(file);

}else{

System.out.println(file);

}

}

}

}



}

package imooc.file;


import java.io.File;

import java.io.IOException;


public class FileUtilTest1 {


public static void main(String[] args) throws IOException {

// TODO 自动生成的方法存根

FileUtils.listDirectory(new File("F:\\example"));


}


}


提问者:慕粉4066036 2016-10-08 21:30

个回答

  • 有忧桑4323185
    2016-11-23 19:01:13

    你的代码在判断是否为目录的那行,if的判断条件  dir.isDirectory()  结果为true  却抛异常。判断条件前加个!就OK了

  • 晴颜
    2016-10-29 01:34:46

    你要看报错信息啊亲,第15行,if后面括号里少了!,条件判断反了

  • zj5649799
    2016-10-08 22:32:15

    为什么你代码里是F盘图上是E盘,不然就是你这个路径不对!没有这个文件路径会报错!