lit*_*hik 4 java bufferedreader printwriter
我试图比较两个随机化的文本文件,并打印出两个文件中匹配的行.档案1:
Student1
Student2
Student3
Student4
Run Code Online (Sandbox Code Playgroud)
文件2:
Student6
Student1
Student2
Run Code Online (Sandbox Code Playgroud)
我希望输出为
Student1
Student2
Run Code Online (Sandbox Code Playgroud)
我的代码如下.
public static void main(String[] args) throws IOException {
String first = "file1.txt";
String second = "file2.txt";
BufferedReader fBr = new BufferedReader(new FileReader(first));
BufferedReader sBr = new BufferedReader(new FileReader(second));
PrintWriter writer = new PrintWriter("test.txt", "UTF-8");
while ((first = fBr.readLine()) != null) {
String partOne1 = fBr.readLine();
String partTwo1 = sBr.readLine();
while ((second = sBr.readLine()) != null) {
System.out.println(first);
writer.println(first);
break;
}
}
writer.close();
fBr.close();
sBr.close();
Run Code Online (Sandbox Code Playgroud)
小智 6
这很简单=)尝试存储第一个文件的所有结果,并与第二个文件中的所有行进行比较.它会是这样的:
package com.company;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException {
String first = "file1.txt";
String second = "file2.txt";
BufferedReader fBr = new BufferedReader(new FileReader(first));
BufferedReader sBr = new BufferedReader(new FileReader(second));
ArrayList<String> strings = new ArrayList<String>();
while ((first = fBr.readLine()) != null) {
strings.add(first);
}
fBr.close();
while ((second = sBr.readLine()) != null) {
if (strings.contains(second)) {
System.out.println(second);
}
}
sBr.close();
}
}
Run Code Online (Sandbox Code Playgroud)
最好在可能的情况下使用内存,在不同的时间内使用内存可以工作太长时间并且使逻辑变得模糊.