【发布时间】:2020-10-01 22:02:37
【问题描述】:
我有一个文件,我想用 Java 读取该文件并将该文件拆分为 n(用户输入)输出文件。这是我读取文件的方式:
int n = 4;
BufferedReader br = new BufferedReader(new FileReader("file.csv"));
try {
String line = br.readLine();
while (line != null) {
line = br.readLine();
}
} finally {
br.close();
}
如何将文件 - file.csv 拆分为 n 文件?
注意 - 由于文件中的条目数约为 100k,因此我无法将文件内容存储到数组中,然后将其拆分并保存到多个文件中。
【问题讨论】:
-
在 while 循环中,只需根据需要将尽可能多的行收集到 String 或 StringBuilder 中,然后将它们写入单独的文件。您无法事先知道文件的数量,最好定义一个文件中的最大行数。
-
您需要循环两次,一次获取行数,一次进行拆分。或者您可以猜测行数并以此方式拆分。
-
@kw4nta 你到底为什么要存储这些行。 1) OP 说存储所有行不是一个选项,2) 鉴于您可以将这些行直接写入另一个文件...
-
我建议您先计算行数。在第二次通过时,将其除以
n并创建包含total/n行的n文件。为此目的使用BufferedReader.readLine()。 -
如果在这个用例中有意义,另一种解决方案:使用循环算法(第一行到第一个文件,第二行到第二个文件等)
标签: java