黑马程序员技术交流社区

标题: 一个疑惑求解 [打印本页]

作者: 胡刚涛    时间: 2012-8-10 20:47
标题: 一个疑惑求解
import java.io.File;
import java.io.IOException;

public class Testdayont {
/**
  * @param args
  */

   private File file;
public File getFile() {
  return file;
}
public void setFile(File file) {
  this.file = file;
}
public void foo(File file) throws IOException{


  System.out.println(file.isFile());
  if (file.isFile()){
  File[] sd=file.listFiles();
  for(File s:sd){
  System.out.println(s);
  }
  }
  else{

  System.out.println("不是文件");
  }
  }

  public Testdayont() {
  super();
}

  public Testdayont(File file) {
  super();
  this.file = file;
}

  public static void main(String[] args) throws IOException {
  File file=new File("D:\\java\\javawork");
  Testdayont sw= new Testdayont();
  sw.setFile(file);
  sw.foo(file);
  }
}
答应结果是
false
不是文件
但是"D:\\java\\javawork确实是在我电脑的硬盘中存在是一个文件啊?不懂!!!

作者: 朱志辉    时间: 2012-8-10 21:34
你确定D:\\java\\javawork是一个文件,还是一个目录?
如果是文件的话,在
for (File s : sd) {
        System.out.println(s);
}
会出现空指针异常,因为file不是一个目录,怎么能获取目录中的文件的路径呢?这道题的if...else那里有逻辑错误
所以代码应改为
  1. if (file.isFile()) {        // 如果是文件
  2.                         System.out.println("是文件");
  3.                 } else {        // 如果不是文件(非文件,即目录)
  4.                         System.out.println("不是文件");
  5.                         File[] sd = file.listFiles();        // 得到目录里的所有文件
  6.                         for (File s : sd) {
  7.                                 System.out.println(s);        // 遍历输出目录里的所有文件
  8.                         }
  9.                 }
复制代码
这就对了。

作者: 胡刚涛    时间: 2012-8-10 22:19
朱志辉 发表于 2012-8-10 21:34
你确定D:\\java\\javawork是一个文件,还是一个目录?
如果是文件的话,在
for (File s : sd) {

ok  不好意思 不小心弄反了
作者: 胡刚涛    时间: 2012-8-10 22:19
问题已经解决!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2