【问题标题】:Read and Write in the same file simultaneously in Java在Java中同时读取和写入同一个文件
【发布时间】: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


【解决方案1】:

按照 JB Nizet 的回答,这里有一些伪代码

readerA, writerB = "", memory = ""
while(readerA.hasNextLine()){
       line = readerA.nextLine()
  if(line isNotPresent in memory){
       add line to memory 
       add line in writerB
   }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多