实现的方法如下面所示,不知道有什么问题,在最后一个文件里是有乱码的,而且全部是乱码,输入文件全是英文文章,不是txt文件,这些文件用用vim,notepad打开都正常,就是最后结果中,第二个bufferedReader 输入的内容是乱码
File f1 = new File(args[1]);
File f2 = new File(args[3]);
File f0 = new File(args[4]);
double length = 0;
FileWriter fos = new FileWriter(f0);
BufferedWriter bw = new BufferedWriter(fos);
if(f1.isDirectory()){
//判断路径是否是路径
File [] fileNames = f1.listFiles();
for(int i=0;i<fileNames.length;i++){
//打开目录下的所有文件,用bufferedReader对象写入到结果文件中去
FileReader fr = new FileReader(fileNames[i]);
length = length+fileNames[i].length();
BufferedReader br = new BufferedReader(fr);
String temp = null;
temp = br.readLine(); //按行写入
while(temp!=null){
bw.append(temp);
temp=br.readLine();
}
br.close();
fr.close();
}
} //第二个目录,实现方法与上面相同
if(f2.isDirectory()){
File [] fileNames = f2.listFiles();
for(int i=0;i<fileNames.length;i++){
length = length+fileNames[i].length();
FileReader fr = new FileReader(fileNames[i]);
BufferedReader br = new BufferedReader(fr);
String temp = null;
temp = br.readLine();
while(temp!=null){
bw.append(temp);
bw.append('\n');
temp=br.readLine();
}
br.close();
fr.close();
}
}
File f1 = new File(args[1]);
File f2 = new File(args[3]);
File f0 = new File(args[4]);
double length = 0;
FileWriter fos = new FileWriter(f0);
BufferedWriter bw = new BufferedWriter(fos);
if(f1.isDirectory()){
//判断路径是否是路径
File [] fileNames = f1.listFiles();
for(int i=0;i<fileNames.length;i++){
//打开目录下的所有文件,用bufferedReader对象写入到结果文件中去
FileReader fr = new FileReader(fileNames[i]);
length = length+fileNames[i].length();
BufferedReader br = new BufferedReader(fr);
String temp = null;
temp = br.readLine(); //按行写入
while(temp!=null){
bw.append(temp);
temp=br.readLine();
}
br.close();
fr.close();
}
} //第二个目录,实现方法与上面相同
if(f2.isDirectory()){
File [] fileNames = f2.listFiles();
for(int i=0;i<fileNames.length;i++){
length = length+fileNames[i].length();
FileReader fr = new FileReader(fileNames[i]);
BufferedReader br = new BufferedReader(fr);
String temp = null;
temp = br.readLine();
while(temp!=null){
bw.append(temp);
bw.append('\n');
temp=br.readLine();
}
br.close();
fr.close();
}
}
解决方案 »
- 求教Java编程思想里面的一题,怎么也找不到错误在哪!
- 论坛看见的数组排序算法(不懂)
- java.sql.sqlexception microsoft odbc 驱动程序管理器 无效的游标状态
- 以前的有些忘记了。麻烦朋友们都进来看看。关于static问题
- SQL2000 JDBC连接数据库的问题
- Socket接收网页表单提交中文无法正常显示
- 谁知道怎么样控制打印?
- method <init>(Ljava/lang/String;)V not found是怎樣的錯誤?
- 关于PACKAGE的问题
- 有高手知道请速回答,万分火急!如何得到两整数之商(结果精确到两位小数)
- 大家帮我看看这个功能时怎么实现的
- 把控制台的输入,写入到文件,这样写有什么不对
package test.InherityTest;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 CombineFile {
public static void main(String[] args){
File f1 = new File("a");
File f2 = new File("b");
File fo = new File("o");
try {
FileReader fr = new FileReader(f1);
FileWriter fw = new FileWriter(fo);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
String line = "";
while((line = br.readLine()) != null){
System.out.println(line);
bw.write(line);
bw.newLine();
}
br.close();
fr.close();
fr = new FileReader(f2);
br = new BufferedReader(fr);
while((line = br.readLine()) != null){
System.out.println(line);
bw.write(line);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
fr.close();
fw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
另外考虑下原始文件的编码问题,如果文件编码不同,读入后合并输出肯定是乱码吧,因为不符合你输出文件的格式。