【发布时间】:2017-12-27 16:35:48
【问题描述】:
我想要的是在文件B中写一个在文件A中的“字符串”,如果它在文件B中不存在,知道B在开始时是空的
BufferedReader bfA=new BufferedReader(new FileReader("A.txt"));
BufferedReader bfB=new BufferedReader(new FileReader("B.txt"));
BufferedWriter writerB=new BufferedWriter(new FileWriter("B.txt"));
String line1,line2;
boolean bool=false;
while((line1=bfA.readLine())!=null){
bfB=new BufferedReader(new FileReader("B.txt"));
while((line2=bfB.readLine())!=null){
if(line1.equals(line2)){
bool=true;}}
if(bool==false){
writerB.write(line1);
}
}
问题是如果文件A中有重复的字符串
【问题讨论】:
-
你为什么不把你已经读过的行保存在一个集合中,在内存中?除非您的文件非常大,否则这会更容易,也更快。
-
抱歉我没听懂
-
您在内存中创建了一个 HashSet
。每次从 A 中读取一行时,检查它是否在集合中。如果不是,则将其写入 B。然后将行添加到集合中。因此,无需在每一行读取 B。
标签: java string file bufferedreader bufferedwriter