我有一个 CSV 文件,我读取该文件并将其内容存储为字符串数组。
然后我想将该输入写回一个单独的 CSV 文件,但我想循环遍历并将内容写回该 CSV 文件 5 次。
以下代码在打印出代码时有效,但我假设它每次写入 CSV 文件时都会覆盖该文件,因为它只包含 CSV 文件中循环的 1 次迭代?
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
String[] nextLine = null;
for (int i = 0; i<=5; i++){
CSVReader reader = new CSVReader(new FileReader("D:\\input.csv"), ',' , '"' , 1);
CSVWriter writer = new CSVWriter(new FileWriter("D:\\output.csv"));
while ((nextLine = reader.readNext()) != null) {
//Write the record to Result file
writer.writeNext(nextLine);
System.out.println(Arrays.toString(nextLine));
}
i++;
writer.flush();
writer.close();
}
编辑:我需要的格式是 [a,b,c,a,b,c,a,b,c...] 而不是 [a,a,a,b,b,b,c, c,c...] 假设我的输入文件是 [item1 狗 猫 项目2 狗 猫 项目3 狗 cat] 那么我希望它按顺序打印 5 次,而不是像 [item 1, item 1, item 1, item 1, item 1,dog,dog...]
最佳答案
1) 你的循环已经倒退了。你想读一行,然后写 5 次。
2) 你的 for 循环实际上运行了 6 次 i <= 5
.
3) 你不需要i++
再次在 for 循环中
尝试以下操作
public static void main(String[] args) throws Exception {
String[] nextLine = null;
try (
CSVReader reader = new CSVReader(new FileReader("D:\\input.csv"), ',' , '"' , 1);
CSVWriter writer = new CSVWriter(new FileWriter("D:\\output.csv"))
) {
while ((nextLine = reader.readNext()) != null) {
// Write 5 records to Result file
for (int i = 0; i < 5; i++){
writer.writeNext(nextLine);
System.out.println(Arrays.toString(nextLine));
}
writer.flush();
}
}
(尝试使用资源将关闭文件本身)
关于java - 如何在Java中循环并将相同的内容写入CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702742/