用java实现将一个项目中所有的.java文件合并输出至某文件
2013-03-04 21:52
781 查看
今天遇到了一个实际的问题,想把以前做的项目中所有的代码输出到一个txt文件中,想到以前看马士兵的视频教程时曾经跟着写过一个统计代码的小程序,在另一篇博文中会写出其代码,修改后实现了该功能。
整体思路就是利用I/O流,当输入一个文件夹路径时,若它还含有子目录,则递归该文件夹直到不含目录,然后将java源文件中的代码挨行读取,写入一个特定的txt文件。
注意两点:
1.目录中可能含有子目录,因此需要递归
2.在将每个java源文件中的代码写入txt文件时,需要在该txt文件后面添加,因此用到了FileWriter带参数true的构造函数,表示可以在文件后面添加内容
代码如下:
整体思路就是利用I/O流,当输入一个文件夹路径时,若它还含有子目录,则递归该文件夹直到不含目录,然后将java源文件中的代码挨行读取,写入一个特定的txt文件。
注意两点:
1.目录中可能含有子目录,因此需要递归
2.在将每个java源文件中的代码写入txt文件时,需要在该txt文件后面添加,因此用到了FileWriter带参数true的构造函数,表示可以在文件后面添加内容
代码如下:
import java.io.*; import java.util.regex.*; /** * 合并一个项目中所有java源文件的代码至一个txt文件 * @author ybsun * 20130304 */ public class codeMerge { public static void main(String[] args) { File folder = new File("D:\\test");//要统计代码的工程路径 File outFile = new File("d:\\out.txt");//输出目标文件 recur(folder, outFile); System.out.println("merge done"); } /** * 递归工程目录,找到所有的java源文件并合并输出 * @param file 源代码目录或文件 * @param outFile 目标txt文件,本方法中用它参数完全是因为merge方法需要该参数 */ public static void recur(File file, File outFile) { File[] files = file.listFiles(); for(int i=0; i<files.length; i++) { //如果files[i]为目录,则递归,直到最里面那一层 if(files[i].isDirectory() == true) { recur(files[i], outFile); } //如果files[i]为文件且为java源文件,则读取其代码并合并 用到了正则表达式 else if((files[i].isFile()==true) && files[i].getName().matches(".*\\.java$")) { merge(files[i], outFile); } } } /** * 读取java源文件中的每一行代码,输出至目标文件 * @param file 要读取的java源文件 * @param outFile 目标文件 .txt文件 */ public static void merge(File file, File outFile) { //缓冲输出和输入流 BufferedWriter bw = null; BufferedReader br = null; try { //注意此处用了FileWriter带参数true的构造方法,这样才能在.txt文件的末尾加入内容,否则会覆盖其以前的内容 bw = new BufferedWriter(new FileWriter(outFile, true)); br = new BufferedReader(new FileReader(file)); //读取一个文件第一行代码之前,先在.txt文件中做好标记,表明此处是哪个源文件 bw.newLine(); bw.write("读取文件" + file.getName()); bw.newLine(); String line = ""; while((line=br.readLine()) != null) { bw.write(line);//挨行从源文件读取并写入目标文件 bw.newLine(); bw.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { if(bw != null) { //注意:此处的两句代码不能调换,若bw=null在前,则会出现空指针错误 bw.close(); bw = null; } if(br != null) { br.close(); br = null; } } catch (IOException e) { e.printStackTrace(); } } } }
相关文章推荐
- python实现将文件夹内所有txt文件合并成一个文件
- JAVA导出项目的所有源代码到一个文件
- Python实现合并同一个文件夹下所有PDF文件的方法示例
- 复制一个目录下的所有文件到另外一个目录(Java实现)
- python实现将文件夹内所有txt文件合并成一个文件
- Java 组合的实现- 输入一个字符,输出字符中字母组成的所有组合
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- Python实现合并同一个文件夹下所有txt文件的方法示例
- 复制一个文件夹下所有文件(包括子文件夹)并修改文件后缀名 java实现加密文档unlock
- Java without entity 实现在一个 control中写一个增删改查4个方法,而适用于整个项目的没有业务的所有增删改查。
- java实现找出所有的最大连通子图,并把连通子图中所有顶点的集合合并为一个i额字符串集合。
- 使用java IO实现指定后缀的文件合并为一个文件
- 网易2015编程题(一用Java实现一个多线程程序将这个10000个数输出到5个不用文件中)
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
- Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹
- Java实现输入一个整数将该整数之前的所有素数输出出来
- 输出一个集合的所有子集合-Java代码实现(一)
- 从一个java项目里面读取多个Java文件到一个txt实现备份
- java实现输出文件夹下某个格式的所有文件实例代码
- 输出一个集合的所有子集合-Java代码实现(二)