在java中连接.java文件

时间:2014-05-10 12:58:42

标签: java

所以我正在创建一个java应用程序来查找目录上的所有java文件,然后将它们连接成一个单独的文件放在同一个目录中,但我似乎无法正确连接。到目前为止,我所做的就是希望你们可以帮助我,因为我尝试了各种各样的事情,但仍然无法做到。谢谢!

import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileConcatenate {

    public static void main(String[] args) {
        String dirName = args[0];
        String fileName = args[1];
        File dirFile = new File("C:\\Users\\Michael\\Desktop\\" + dirName + "");
        File file = new File("C:\\Users\\Michael\\Desktop\\" + dirName + "\\" + fileName + ".java");
        FileFilter filter = new FileFilter(){
            public boolean accept(File pathname){
                if(pathname.getName().contains(".java")){
                    return true;
                }else{
                    return false;
                }
            }
        };
        try{
            if(!dirFile.exists()){
                System.out.println("There is no directory with that name");
            }
            File[] javaFile = dirFile.listFiles(filter);
            if(!file.exists()){
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file, true);
            for(File f : javaFile){
                FileReader fr = new FileReader(f);
                fw.write(fr.read());
                fr.close();
            }
            fw.flush();
            fw.close();

        }catch(IOException e){
            e.printStackTrace();
        }

    }

}

1 个答案:

答案 0 :(得分:0)

这样做。有关更多信息,请阅读内联评论。

...
FileWriter fw = new FileWriter(file, true);
for (File f : javaFile) {
    FileReader fr = new FileReader(f);
    // read 1000 chars at a time from source file
    char[] cbuf = new char[1000];
    int count = -1;
    // iterate till the end of source file
    // here count represent the no of chars read at a time
    while ((count = fr.read(cbuf)) != -1) {
        // write in the targeted file
        fw.write(cbuf, 0, count);
    }
    fr.close();
}
...

在您的情况下,fw.write(fr.read());没有达到您所期望的效果。

它只读取源文件中的一个字符并写入目标文件。

有关详细信息,请查看InputStreamReader#read() 读取单个字符