所以我正在创建一个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();
}
}
}
答案 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() 读取单个字符。