Java 两个log 用过io 存到list 集合中并写入到一个新的log 中,其中数据按日期排序存放
时间: 2023-03-21 08:00:35 浏览: 174
可以按照以下步骤实现:
1. 使用Java的IO库读取两个log文件,将它们的内容存储到两个List集合中。
2. 将两个List集合合并成一个新的List集合。
3. 使用Java的Collections.sort()方法对新的List集合按照日期进行排序。
4. 使用Java的IO库将排序后的数据写入到一个新的log文件中。
下面是代码示例:
```java
import java.io.*;
import java.util.*;
public class LogMerger {
public static void main(String[] args) throws IOException {
// 读取两个log文件
List<String> log1 = readFile("log1.txt");
List<String> log2 = readFile("log2.txt");
// 合并两个List集合
List<String> mergedLog = new ArrayList<>(log1);
mergedLog.addAll(log2);
// 对新的List集合按照日期排序
Collections.sort(mergedLog, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] fields1 = o1.split("\\s");
String[] fields2 = o2.split("\\s");
return fields1[0].compareTo(fields2[0]);
}
});
// 写入到新的log文件
writeFile("mergedLog.txt", mergedLog);
}
// 读取文件内容到List集合中
private static List<String> readFile(String filename) throws IOException {
List<String> lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
reader.close();
return lines;
}
// 将List集合内容写入到文件中
private static void writeFile(String filename, List<String> lines) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
for (String line : lines) {
writer.write(line);
writer.newLine();
}
writer.close();
}
}
```
在这个示例中,假设log文件的每行数据格式为"日期 日志内容",如"2022-02-26 [INFO] something happened"。在比较日期时,我们只比较每行数据的第一个字段(即日期部分)。如果日期部分相同,则按照后面的内容排序。如果需要更严格的排序,可以根据实际需求修改比较逻辑。
阅读全文