概述
测试两个文件每一行去除重复,然后打印到第三个文件。
新手代码可读性,性能等差。希望大家指点我的不足,谢谢大家!
import java.io.*; import java.util.ArrayList; import
java.util.Iterator; import java.util.List;
public class TwoFileTest {
int i = 0;
int j = 0;
String path1 = "C:\Users\Administrator\Desktop\file1.txt";
String path2 = "C:\Users\Administrator\Desktop\file2.txt";
File file1 = new File(path1);
File file2 = new File(path2);
FileReader fileReader1 = null;
FileReader fileReader2 = null;
FileWriter fileWriter = null;
BufferedWriter bufferedWriter = null;
BufferedReader bufferedReader1 = null;
BufferedReader bufferedReader2 = null;
List<String> list = new ArrayList<>();
List<String> list2 = new ArrayList<>();
public void Print(){
if (file1.exists() && file2.exists()){
try {
fileReader1 = new FileReader(path1);
fileReader2 = new FileReader(path2);
bufferedReader1 = new BufferedReader(fileReader1);
bufferedReader2 = new BufferedReader(fileReader2);
//读取两个文件每行得数据
while (bufferedReader2.read() != -1 & bufferedReader1.read() != -1){
String str1 = null;
String str2 = null;
str1 = bufferedReader1.readLine();
str2 = bufferedReader2.readLine();
//当str1获取str2没有值的时候跳出循环
if (str1 == null & str2 == null){
break;
}
list.add(str1);
list2.add(str2);
}
i = list.size();
j = list2.size();
//如果i>=j那么从行数最小j得文件开始循环然后对比两个每一行得内容,内容相同得字去掉。
//else相反,还没有写。
if(i >= j){
//遍历最小得list集合
for (int a = 0 ; a < j ; a++){
String fileText = "";
//这一句出问题了
String fileOne = list.get(a);
String fileTwo = list2.get(a);
System.out.println("One"+fileOne+".........."+a);
System.out.println("Two"+fileTwo+".........."+a);
//开始循环list取出来得String值然后对比
for (int b = 0; b < fileOne.length();b++){
try{
String zz = String.valueOf(fileOne.charAt(b));
String cc = String.valueOf(fileTwo.charAt(b));
//如果两个字相同不做任何事情,不相同就放在fileText中
if (zz.equals(cc)){
}else{
fileText = fileText + String.valueOf(fileTwo.charAt(b));
}
}catch (Throwable e){
System.out.println("出错了....");
}
}
list.add(a,fileText);
}
}else{
}
fileWriter = new FileWriter("C:\Users\Administrator\Desktop\file3.txt");
bufferedWriter = new BufferedWriter(fileWriter);
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
bufferedWriter.write(iterator.next());
}
bufferedWriter.close();
} catch (FileNotFoundException e) {
System.out.println("获取文件失败!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("请检查两个文件是否存在!");
}
}
public static void main(String[] args) {
new TwoFileTest().Print();
} }
结果 :
无论String fileOne = list.get(a);中得a值怎么变化,取得永远是list.get(0)得这一句
文件file1:
文件file2
最后
以上就是长情小松鼠为你收集整理的list.get(a)出现只会取到第一个得问题的全部内容,希望文章能够帮你解决list.get(a)出现只会取到第一个得问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复