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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗磊 中级黑马   /  2012-9-26 08:46  /  2367 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.luolei.copy;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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("E:\\视频\\java基础(1-5)\\毕向东_Java基础源代码Codes");// 文件目录在下面给出
}
public void seeFile(String dirFile){
  this.dirFile = new File(dirFile);
  File[] fileArray =this.dirFile.listFiles();
  for(int i=0; i<fileArray.length; i++){
   if(fileArray.isFile()){
    if(fileArray.getName().endsWith(".java"))
     copy(fileArray);
   }else if(fileArray.isDirectory()){
    seeFile(fileArray.getAbsolutePath());
    filePath = fileArray.getName();
   }
  }
}
public void copy(File fileName){
  //System.out.println(filePath);
  //System.out.println(fileName);
  BufferedWriter bw;
  BufferedReader br;
  try {
   bw = new BufferedWriter(new FileWriter("D:\\"+filePath+".txt",true));//目的目录也在下面
   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) {
   System.out.println(e);
  }
}

}
//我的目录下只有
//但是处理后就多了这么一些内容!看看我的代码有那些地方要改进一下

源.jpg (40.14 KB, 下载次数: 31)

源文件目录下有的

源文件目录下有的

后.jpg (85.3 KB, 下载次数: 26)

处理后产生的新目录

处理后产生的新目录

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
我也來擠擠,覺得大家的回覆很好
回复 使用道具 举报
本帖最后由 罗磊 于 2012-9-26 12:22 编辑
杜佳瑞 发表于 2012-9-26 11:48
首先,这个程序的作用是将每个文件夹的.java文件拷贝到以这个文件命名的.txt文件当中,如果这个文件夹中 ...

你的回答有那么点道理!不过我的文件夹下 还有子文件夹的!而且不只一个!如果按照你的说法!我得到的只有一个java.txt的文件!而并不是我想要的!每个文件夹作为文件名!而文件夹的内容拷贝到文件夹命名的的文件上!所以继续求解!
回复 使用道具 举报
罗磊 发表于 2012-9-26 10:12
奇怪啊!我代码里那个fileArray 后有【】的!但为何复制上来就没那个括号啦!上个图表示证据!如果是系统有 ...

首先,这个程序的作用是将每个文件夹的.java文件拷贝到以这个文件命名的.txt文件当中,如果这个文件夹中还有子文件夹进行递归,子文件夹中的.java文件会拷贝到以子文件夹命名的.txt文件中,以此类推。这个null.txt文件就是你的根目录为名的文件,因为当根目录中只有.java文件时不会执行蓝字部分,filePath会默认为null。在代码中加入红字部分问题就会解决
public void seeFile(String dirFile) {
  this.dirFile = new File(dirFile);
  File[] fileArray = this.dirFile.listFiles();
  filePath = "java";
  for (int i = 0; i < fileArray.length; i++) {  
   if (fileArray.isFile()) {
    if (fileArray.getName().endsWith(".java"))
     copy(fileArray);
   } else if (fileArray.isDirectory()) {
    seeFile(fileArray.getAbsolutePath());
    filePath = fileArray.getName();
   }  
  }
}
回复 使用道具 举报
奇怪啊!我代码里那个fileArray 后有【】的!但为何复制上来就没那个括号啦!上个图表示证据!如果是系统有问题!请管理员看看啊!还有就是 我的问题上面的两个兄弟并没有解决! 我说下我的目的吧!我是想要通过遍历的到所有的.java文件 然后将这些在同一个文件下的.java文件复制到以该文件夹作为名称的.txt文件中!可出现了空文件夹名!而且有的文件夹名不是我想要的!所以才求解!请管理员帮我改过来!我的问题还没解决!

HG]UF677%@$C3([O_VPF5@6.jpg (27.02 KB, 下载次数: 25)

这是在网页上显示的

这是在网页上显示的

MEQCF1%{1VPE~CVPZFA9$B9.jpg (32.8 KB, 下载次数: 29)

这是我Eclipse显示的

这是我Eclipse显示的

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. import java.io.*;
  2. public class Copy
  3. {
  4.         private File dirFile;
  5.         private String filePath;
  6.         public static void main(String[] args)
  7.         {
  8.                 new Copy().seeFile("E:\\视频\\java基础(1-5)\\毕向东_Java基础源代码Codes");// 文件目录在下面给出
  9.         }
  10.         public void seeFile(String dirFile)
  11.         {
  12.                 this.dirFile = new File(dirFile);
  13.                 File[] fileArray =this.dirFile.listFiles();
  14.                 for(int i=0; i<fileArray.length; i++)
  15.                 {
  16.                         if(fileArray[i].isFile())
  17.                         {
  18.                                 if(fileArray[i].getName().endsWith(".java"))
  19.                                         copy(fileArray[i]);
  20.       
  21.                         }
  22.                         else if
  23.                         (fileArray[i].isDirectory())
  24.                         {
  25.                                 seeFile(fileArray[i].getAbsolutePath());
  26.                                 filePath = fileArray[i].getName();
  27.                         }
  28.                 }
  29.         }
  30.         public void copy(File fileName)
  31.         {
  32.                 BufferedWriter bw=null;
  33.                 try
  34.                 {
  35.                         bw = new BufferedWriter(new FileWriter("D:\\test.txt",true));//目的目录也在下面
  36.                         bw.write(fileName.getName());
  37.                         bw.newLine();
  38.                         bw.flush();
  39.    
  40.                 }


  41.                 catch (IOException e)
  42.                 {
  43.                         System.out.println(e);
  44.                 }
  45.                 finally
  46.                 {
  47.                         try
  48.                         {
  49.                                 if(bw!=null)
  50.                                         bw.close();
  51.                         }
  52.                         catch(IOException e)
  53.                         {
  54.                                 e.printStackTrace();
  55.                         }
  56.                   }
  57.         }
  58. }





复制代码
改成这样了

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
编译能通过?对fileArray遍历的代码有错误
  1. for(int i=0; i<fileArray.length; i++)
  2.           {
  3.            if(fileArray[i].isFile())
  4.            {
  5.             if(fileArray[i].getName().endsWith(".java"))
  6.              copy(fileArray[i]);
  7.            }else if(fileArray[i].isDirectory())
  8.            {
  9.             seeFile(fileArray[i].getAbsolutePath());
  10.             filePath = fileArray[i].getName();
  11.            }
  12.           }
复制代码

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马