黑马程序员技术交流社区

标题: 请问这样写是哪个地方错了 [打印本页]

作者: 张雪磊    时间: 2012-7-27 20:17
标题: 请问这样写是哪个地方错了
本帖最后由 张雪磊 于 2012-7-28 08:50 编辑

package com.itheima;

import java.io.*;

/*
需求: 编写一个程序,将d:\java 目录下的所有.java 文件复制到d:\jad 目录下,
                 并将原来文件的扩展名从.java 改为.jad
*/

public class Test9 {

        /**
         * @param args
         */
        public static void main(String[] args) throws IOException{
                // TODO Auto-generated method stub
                File dir=new File("d:\\java");
               
                searchFile(dir);
        }
        
        public static void searchFile(File dir)throws IOException{
                File[] files = dir.listFiles();
               
                for(File file:files){
                        if(file.isDirectory())
                                searchFile(file);
                        else{
                                if(file.getName().endsWith(".java")){        
                                        BufferedReader bufr =
                                                new BufferedReader(new FileReader(file.getName()));
                                        String[]arr=file.getName().split("\\.");
                                        BufferedWriter bufw=
                                                new BufferedWriter(new FileWriter("d:\\jad\\"+arr[0]+".jad"));
                                       
                                        String line=null;
                                        while((line=bufr.readLine())!=null){
                                                bufw.write(line);
                                                bufw.flush();
                                        }                                
                                        bufw.close();
                                        bufr.close();
                                }
                        }
                }
               
        }

}

错误信息:

Exception in thread "main" java.io.FileNotFoundException: BufferedDemo.java (系统找不到指定的文件。)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileReader.<init>(Unknown Source)
        at com.itheima.Test9.searchFile(Test9.java:31)
        at com.itheima.Test9.main(Test9.java:19)



作者: 吴立杰    时间: 2012-7-27 21:04
  1. import java.io.*;
  2. public class Test9 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) throws IOException{
  7.                 // TODO Auto-generated method stub
  8.                 File dir=new File("d:\\java");
  9.                 //记住,这步是不会创建文件和文件夹的
  10.                 searchFile(dir);
  11.         }
  12.         
  13.         public static void searchFile(File dir)throws IOException{
  14.                 File[] files = dir.listFiles();
  15.                
  16.                 for(File file:files){
  17.                         if(file.isDirectory())
  18.                                 searchFile(file);
  19.                         else{
  20.                                 if(file.getName().endsWith(".java")){        
  21.                                         BufferedReader bufr =
  22.                                                 new BufferedReader(new FileReader(file));//楼主这个地方错了,它要读的这个文件已经知道地址了,就不需要告诉它了
  23.                                         String[]arr=file.getName().split("\\.");
  24.                                         BufferedWriter bufw=
  25.                                                 new BufferedWriter(new FileWriter("d:\\txt\\"+arr[0]+".txt"));
  26.                                                                                 //楼主上面那句话没错,错在你d盘下没有txt这个目录,writer可以没有文件但必须存在目录,它才能执行写入操作
  27.                                        
  28.                                         String line=null;
  29.                                         while((line=bufr.readLine())!=null){
  30.                                                 bufw.write(line);
  31.                                                 bufw.flush();
  32.                                         }                                
  33.                                         bufw.close();
  34.                                         bufr.close();
  35.                                 }
  36.                         }
  37.                 }
  38.                
  39.         }

  40. }
复制代码

作者: 王程    时间: 2012-7-27 23:25
import java.io.*;

public class Test9 {

               public static void main(String[] args) throws IOException{
                               File dir=new File("d:\\java\\");
               
                searchFile(dir);
        }
        
        public static void searchFile(File dir)throws IOException{
                File[] files = dir.listFiles();
               
                for(File file:files){
                        if(file.isDirectory())
                                searchFile(file);
                        else{
                                if(file.getName().endsWith(".java")){        
                                    File fileDir=new File("d:\\jad\\");
                                    if(!fileDir.exists()){//判断是否有文件夹,没有就新建一个,有了就继续执行
                                       fileDir.mkdir();
                                    }else{
                                        BufferedReader bufr =
                                                new BufferedReader(new FileReader(file));//若使用file.getName就变成了相对地址,在当前文件夹中查找文件,当然找不到了
                                        String[]arr=file.getName().split("\\.");
                                        BufferedWriter bufw=
                                                new BufferedWriter(new FileWriter("d:\\jad\\"+arr[0]+".jad"));
                                       
                                        String line=null;
                                        while((line=bufr.readLine())!=null){
                                                bufw.write(line);
                                                bufw.flush();
                                        }                                
                                        bufw.close();
                                        bufr.close();
                                }
                            }
                        }
                }
               
        }

}






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