gpt4 book ai didi

java - 最有效地合并 2 个文本文件。

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:20 25 4
gpt4 key购买 nike

所以我有成对的大(每个大约 4 GB)txt 文件,我需要创建一个第三个文件,它由 2 个文件组成,处于随机播放模式。以下等式最能说明这一点:

3rdfile =(文件 1 中的 4 行)+(文件 2 中的 4 行)重复此操作,直到我到达文件 1 的末尾(两个输入文件将具有相同的长度 - 这是根据定义)。这是我现在使用的代码,但这在大文件上的扩展性不是很好。我想知道是否有更有效的方法来执行此操作 - 使用内存映射文件会有帮助吗?欢迎所有想法。

public static void mergeFastq(String forwardFile, String reverseFile, String outputFile) {

try {
BufferedReader inputReaderForward = new BufferedReader(new FileReader(forwardFile));
BufferedReader inputReaderReverse = new BufferedReader(new FileReader(reverseFile));
PrintWriter outputWriter = new PrintWriter(new FileWriter(outputFile, true));

String forwardLine = null;
System.out.println("Begin merging Fastq files");
int readsMerge = 0;
while ((forwardLine = inputReaderForward.readLine()) != null) {

//append the forward file
outputWriter.println(forwardLine);
outputWriter.println(inputReaderForward.readLine());
outputWriter.println(inputReaderForward.readLine());
outputWriter.println(inputReaderForward.readLine());
//append the reverse file
outputWriter.println(inputReaderReverse.readLine());
outputWriter.println(inputReaderReverse.readLine());
outputWriter.println(inputReaderReverse.readLine());
outputWriter.println(inputReaderReverse.readLine());

readsMerge++;
if(readsMerge % 10000 == 0) {
System.out.println("[" + now() + "] Merged 10000");
readsMerge = 0;
}

}

inputReaderForward.close();
inputReaderReverse.close();
outputWriter.close();

} catch (IOException ex) {
Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, "Error while merging FastQ files", ex);
}
}

最佳答案

也许您还想尝试使用 BufferedWriter 来减少文件 IO 操作。 http://download.oracle.com/javase/6/docs/api/java/io/BufferedWriter.html

关于java - 最有效地合并 2 个文本文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com