[英]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.