【发布时间】:2021-09-16 05:16:00
【问题描述】:
我正在尝试将数组中的数据转换为 java 中的 CSV 文件。我有一个 CSV 文件,其中数据位于行和列中,需要修改。修改数据并将其存储在简单数组(不是数组列表)中后,我想将其导出或存储在另一个文件中。但是当我运行我的代码时,只有最后一项会打印在 csv 中。
这是我的代码:
import java.util.*;
import java.io.*;
import java.text.*;
public class transformation {
public static final String delimiter = "[,./]";
public static void read(String csvFile) {
try {
String line = "";
String[] csvData = new String[94];
File file = new File(csvFile);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while ((line = br.readLine()) != null) {
//Convert file to csv
for (int i = 0; i < csvData.length; i++) {
System.out.print(csvData[i] + ",");
}
System.out.println();
String filename = "C:/Users/dhanjay.bhardwaj/Desktop/Test.csv";
try (PrintWriter pw = new PrintWriter(filename)) {
for (int j = 0; j < csvData.length; j++) {
pw.write(csvData[j] + ",");
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
br.close();
}
catch(IOException err) {
err.printStackTrace();
}
}
public static void main(String[] args) {
String csvFile = "C:/Users/dhanjay.bhardwaj/Desktop/helloworld.csv";
transformation.read(csvFile);
}
}
我尝试了几种方法但没有成功,所有的输出都是一样的。
【问题讨论】:
-
将写入文件的代码添加到文件中
-
请阅读constructor 类
java.io.PrintWriter的javadoc。注意这部分:如果文件存在,那么它将被截断为零大小 -
@jhamon 我已经修改了我的代码。请检查
-
@Abra 我已阅读,文件创建了一个新文件,但最后一项仍仅打印
-
@Abra 的意思是,如果您为每个已处理的行创建一个新的
PrintWriter,则在处理每个数组之前,目标文件会被截断。在循环读取文件之前创建一次编写器。 (并关闭您的资源)
标签: java arrays csv export-to-csv