A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗磊 中级黑马   /  2012-9-25 23:38  /  1771 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 屈俊材 于 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 (系统找不到指定的文件。)

4 个回复

倒序浏览
你还是把,编译器的结果全部贴上来;
回复 使用道具 举报
本帖最后由 叶征东 于 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: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. }
复制代码
回复 使用道具 举报
  • 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); // <font color="blue"> 注意这里的dirFile是一个String类型而不是一个File类型</font>
  • File files = null;//<font color="blue">这是改正后的</font>
  • files = new File(dirFile);
  • File[] fileArray = files.listFiles();
  • //System.out.println(fileArray);
  • for (int i = 0; i < fileArray.length; i++) {// 拿到全部的.java文件
  • // if(fileArray.isFile()){//再就是这里,,这里的循环中应该用fileArray,这是个小错,注意哈,下面同理都 忆改过来了
  • if (fileArray.isFile()) {// 这里判断内容,不是判断数组对象
  • if (fileArray.getName().endsWith(".java"))
  • if(fileArray.getName() != null){
  • //System.out.println(fileArray.getName());
  • copy(fileArray);//这里需要要传递的是一个路径,并非文件名//呵呵这里就是祸根
  • }
  • } else if (fileArray.isDirectory()) {
  • seeFile(fileArray.getAbsolutePath());
  • //filePath = fileArray.getName<font color="blue">();不知道这一句是想干 什么//这句是要讲文件名作为新复制的文件名
  • }
  • }
  • }
  • public void copy(File fileName) {// 将拿到的文件复制到指定的目录// 这里的接收类型同样需要要改过来//问题就在这一句!多谢
  • BufferedWriter bw = null;//养成好习惯,随时初始化//这句话记住了,谢谢提醒
  • BufferedReader br = null;
  • /*// bw = new BufferedWriter(new
  • // FileWriter("D:\\"+filePath+".txt",true));*/
  • try {
  • bw = new BufferedWriter(new FileWriter("D:\\b.txt",true));//这里如果想写入一个文件中的话还是加上个true吧//这个注释的上一句代码有的!这句是测试代码
  • br = new BufferedReader(new FileReader(fileName));
  • String line = null ;
  • while((line = br.readLine()) != null){
  • bw.write(line);
  • bw.newLine();
  • bw.flush();
  • }
  • bw.close();
  • br.close();
  • } catch (IOException e) {
  • // TODO Auto-generated catch block
  • System.out.println(e);
  • }
  • }
  • }
问题解决啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马