黑马程序员技术交流社区

标题: 为什么我的这个运行一直错误啊 [打印本页]

作者: 327753899    时间: 2014-12-5 22:36
标题: 为什么我的这个运行一直错误啊
public class Test9 {

        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                File orig = new File("e:\\123456");
                File dest = new File("d:\\java");
                findJava(orig,dest);
        }

        public static void findJava(File orig, File dest) {
                // TODO 自动生成的方法存根
                if(!dest.exists()){
                        dest.mkdir();
                }
                if(!dest.isDirectory()){
                        dest.mkdir();
                }
                File[] files = orig.listFiles();
                for(File file : files){
                        if(file.isDirectory()){
                                findJava(file,dest);
                        }else if(file.getName().endsWith(".java")){
                                copy(file,dest);
                        }
                }
        }

        public static void copy(File file, File dest){
                // TODO 自动生成的方法存根
                BufferedReader buf = null;
                PrintWriter out = null;
                try {
                        buf = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
                        out = new PrintWriter(dest+"\\"+file.getName().replace(".java", ".txt"));
                } catch (FileNotFoundException e) {
                        // TODO 自动生成的 catch 块
                        e.printStackTrace();
                }
                String line = null;
                try {
                        while((line=buf.readLine())!=null){
                                out.write(line);
                        }
                } catch (IOException e) {
                        // TODO 自动生成的 catch 块
                        e.printStackTrace();
                }finally{
                        try {
                                if(buf!=null){
                                        buf.close();
                                }
                                if(out!=null){
                                        out.close();
                                }
                        } catch (Exception e2) {
                                // TODO: handle exception
                        }
                }
        }

}

作者: 赖永树    时间: 2014-12-5 22:44
本帖最后由 赖永树 于 2014-12-5 22:49 编辑

空指针错误,orig的文件夹你没有创建出来
  1. <font style="background-color: rgb(255, 255, 255);">    public static void findJava(File orig, File dest) {
  2.             // TODO 自动生成的方法存根
  3.            if(!orig.exists()){  //这里打错了,已修正
  4.             orig.mkdir(); //这里打错了,已修正
  5.             }
  6.             if(!dest.isDirectory()){
  7.                     dest.mkdir();
  8.             }
  9.             File[] files = orig.listFiles();
  10.             for(File file : files){
  11.                     if(file.isDirectory()){
  12.                             findJava(file,dest);
  13.                     }else if(file.getName().endsWith(".java")){
  14.                             copy(file,dest);
  15.                     }
  16.             }
  17.     }</font>
复制代码


作者: 娱尘    时间: 2014-12-5 23:04
  File orig = new File("e:\\123456");这行有问题,要吗这里的文件必须存在,要么加个判断,没有的话就建立这个文件
作者: 赖永树    时间: 2014-12-5 23:12
娱尘 发表于 2014-12-5 23:04
File orig = new File("e:\\123456");这行有问题,要吗这里的文件必须存在,要么加个判断,没有的话就建 ...

这一行是没有问题的,只不过他在这里错了,我猜是复制了第一段的代码忘记改变量名了
  1. if(!dest.exists()){
  2.                          dest.mkdir();
  3.                  }
  4.                  if(!dest.isDirectory()){
  5.                          dest.mkdir();
  6.                  }
复制代码





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