黑马程序员技术交流社区

标题: 请帮我看看!为何抛空 [打印本页]

作者: 罗磊    时间: 2012-9-25 23:38
标题: 请帮我看看!为何抛空
本帖最后由 屈俊材 于 2012-9-26 07:53 编辑

package com.luolei.copy;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Copy {
        private File dirFile;
        private String filePath;
        public static void main(String[] args) {
               
                        new Copy().seeFile("F:\\bb");//这里传一个目录
        }
        public void seeFile(String dirFile){//这里接收目录
                this.dirFile = new File(dirFile);
                File[] fileArray =this.dirFile.listFiles();
                for(int i=0; i<fileArray.length; i++){//拿到全部的.java文件
                        if(fileArray.isFile()){
                                if(fileArray.getName().endsWith(".java"))
                                        copy(fileArray.getName());
                        }else if(fileArray.isDirectory()){
                                seeFile(fileArray.getAbsolutePath());
                                filePath = fileArray.getName();
                        }
                }
        }
        public void copy(String fileName){将拿到的文件复制到指定的目录
                BufferedWriter bw;
                BufferedReader br;
                try {
                //        bw = new BufferedWriter(new FileWriter("D:\\"+filePath+".txt",true));
                        bw = new BufferedWriter(new FileWriter("D:\\b.txt"));
                        br = new BufferedReader(new FileReader(fileName));
                        String len =null;
                        while((len = br.readLine())!=null){
                                bw.write(len);
                                bw.newLine();
                                bw.flush();
                                
                        }
                        bw.close();
                        br.close();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        System.out.println(e);
                }
        }
        
}
我系统有这个文件啦!
还是j抛啦!   java.io.FileNotFoundException: a.java (系统找不到指定的文件。)

作者: hello_world!    时间: 2012-9-26 00:35
你还是把,编译器的结果全部贴上来;
作者: 叶征东    时间: 2012-9-26 00:49
本帖最后由 叶征东 于 2012-9-26 01:14 编辑

  public void seeFile(String dirFile){//这里接收目录
                this.dirFile = new File(dirFile);
                File[] fileArray =this.dirFile.listFiles();
                for(int i=0; i<fileArray.length; i++){//拿到全部的.java文件
                        if(fileArray.isFile()){
                                
if(fileArray.getName().endsWith(".java"))//----可能是这错了,fileArray是个数组,应该是取数组里面的元素,数组里面的元素才是文件.
copy(fileArray.getName());---->这里也是,下面的,同理.
}else if(fileArray.isDirectory()){
seeFile(fileArray.getAbsolutePath());
filePath = fileArray.getName();
                        }
                }




系统好像有异常了, 会显示为fileArray,
楼主发贴的时候应该也有这个异常.

作者: 张飞年    时间: 2012-9-26 01:53
本帖最后由 张飞年 于 2012-9-26 01:58 编辑

楼主这个代码我觉得我好多问题的,你说的找不到文件是因为,在copy()方法中其实需要的是一个File类型路径,而不是一个文件名。另外还有好多的问题,详细看下面代码:【为什么想设置个注释是蓝色前景的老弄不上】
  1. public class Copy {
  2.         private File dirFile;
  3.         private String filePath;

  4.         public static void main(String[] args) {

  5.                 new Copy().seeFile("f:\\bb");// 这里传一个目录
  6.         }

  7.         public void seeFile(String dirFile) {// 这里接收目录
  8.                 // this.dirFile = new File(dirFile);     // <font color="blue"> 注意这里的dirFile是一个String类型而不是一个File类型</font>
  9.                 File files = null;//<font color="blue">这是改正后的</font>
  10.                 files = new File(dirFile);
  11.                 File[] fileArray = files.listFiles();
  12.                 //System.out.println(fileArray);
  13.                 for (int i = 0; i < fileArray.length; i++) {// 拿到全部的.java文件
  14.                         // if(fileArray.isFile()){//<font color="blue">再就是这里,,这里的循环中应该用fileArray[i],这是个小错,注意哈,下面同理都 忆改过来了</font>
  15.                         if (fileArray[i].isFile()) {// <font color="blue">这里判断内容,不是判断数组对象</font>
  16.                                 if (fileArray[i].getName().endsWith(".java"))
  17.                                         if(fileArray[i].getName() != null){
  18.                                                 //System.out.println(fileArray[i].getName());
  19.                                                 copy(fileArray[i]);//<font color="blue">这里需要要传递的是一个路径,并非文件名</font>
  20.                                         }
  21.                         } else if (fileArray[i].isDirectory()) {
  22.                                 seeFile(fileArray[i].getAbsolutePath());
  23.                                 //filePath = fileArray[i].getName<font color="blue">();//不知道这一句是想干 什么</font>
  24.                         }
  25.                 }
  26.         }

  27.         public void copy(File fileName) {// 将拿到的文件复制到指定的目录<font color="blue">// 这里的接收类型同样需要要改过来</font>
  28.                 BufferedWriter bw = null;//<font color="blue">养成好习惯,随时初始化</font>
  29.                 BufferedReader br = null;
  30.                
  31.                         /*// bw = new BufferedWriter(new
  32.                         // FileWriter("D:\\"+filePath+".txt",true));*/
  33.                 try {        
  34.                         bw = new BufferedWriter(new FileWriter("D:\\b.txt",true));//<font style="background-color: lemonchiffon;" color="blue">这里如果想写入一个文件中的话还是加上个true吧</font>
  35.                         br = new BufferedReader(new FileReader(fileName));
  36.                
  37.                         String line = null ;
  38.                         while((line = br.readLine()) != null){
  39.                                 bw.write(line);
  40.                                 bw.newLine();
  41.                                 bw.flush();
  42.                         }
  43.                         bw.close();
  44.                         br.close();
  45.                 } catch (IOException e) {
  46.                         // TODO Auto-generated catch block
  47.                         System.out.println(e);
  48.                 }
  49.         }
  50. }
复制代码

作者: 罗磊    时间: 2012-9-26 08:26
问题解决啦!





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