繁体   English   中英

JAVA-将重复从一个文本文件复制到另一个-需要帮助删除 output 中的多个副本

[英]JAVA- copy duplicates from one text file to another- need help removing multiple copies in output

所以我还不能使用 arrayList 或 hash 因为我们还没有学会。 我已经成功地将副本只复制到了新的文本文件中。现在我不知道如何只将一个副本而不是所有副本复制到新文件中。 我想要的 output 是: 动物穿越 Java 基础 Web 编程滑雪 101 Z148E6221F39839

public static void main(String[] args) throws FileNotFoundException, IOException {
    boolean flag = false;


   String input = ("C:\\Users\\Tyler\\Desktop\\Java Projects\\COMP1231\\"
            + "Assignment 3\\BookTitles.inp");
    String output = "C:\\Users\\Tyler\\Desktop\\Java Projects\\COMP1231\\"
            + "Assignment 3\\DuplicatesBook.inp";
    
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(output));
        BufferedReader br = new BufferedReader(new FileReader(input));
        
        String s;
        
        while ((s = br.readLine()) != null){
        bw.write(s + "\n");
        flag = false;
        
        BufferedReader br2 = new BufferedReader(new FileReader(output));
        String s2;
        
        while((s2 = br2.readLine()) != null){
            if (s.equals(s2)){
                flag = true;
                break;
            }
            s2 = br2.readLine();
        }
        
        if (!flag){
           bw.write(s + "\n");
            bw.flush();
        }
         s = br.readLine();
    }
        br.close();
        bw.close();
        System.out.println("Files successful.");
    }
    catch (Exception e){
        return;
    }
    
 
        }
    }

对于这个问题,我尝试了一种不同的方法,使用ArrayList<String>来查找重复的行。 代码搜索重复行并将它们写入 output 文件。

public static void main(String[] args) throws FileNotFoundException, IOException {

    String input = ("C:\\Users\\Tyler\\Desktop\\Java Projects\\COMP1231\\"
            + "Assignment 3\\BookTitles.inp");
    String output = "C:\\Users\\Tyler\\Desktop\\Java Projects\\COMP1231\\"
            + "Assignment 3\\DuplicatesBook.inp";
    
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(output));
        BufferedReader br = new BufferedReader(new FileReader(input));
        
        ArrayList<String> lines = new ArrayList<>();
        ArrayList<String> duplicates = new ArrayList<>();
        
        String s;
        while ((s = br.readLine()) != null) {
            lines.add(s);
        }
        
        for(String main : lines) {
            if(duplicates.contains(main)) {
                // Skip this line, because we already figured out that it's duplicate
                continue;
            }
            int count = 0;
            for(String sub : lines) {
                if(sub.equals(main)) {
                    // The lines are equal
                    // increase the counter
                    count++;
                }
            } 
            // If the line appears more then once
            // Add it to the duplicate list
            if(count > 1) {
                duplicates.add(main);
            }
        }
        
        // Write all duplicate lines to the BufferedOutputWriter
        for(String duplicate : duplicates) {
            bw.write(duplicate+"\n");
        }
        
        // Don't forget to flush..
        bw.flush();
        
        // Close all inputs and outputs
        bw.close();
        br.close();
        
        System.out.println("All files saved.");
    }
    catch (Exception e) {
        return;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM