我正在使用java中的緩衝寫入器寫入一個csv文件。我的數據寫入正確,但我想有不同的列下的數據來,目前它正在寫一個行的每個日期實例,但不是由列分隔。使用Java中的緩衝寫入器編寫csv文件
的代碼是
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
File file = new File(dirName + "\\"+ df.format(new Date()) +"_Statistics.csv");
if (!file.exists())
file.createNewFile();
FileWriter fw = new FileWriter(file);
writer = new BufferedWriter(fw);
writer.write("Message Source");
writer.write("Message Name");
writer.write("Component");
writer.write("Occurance");
writer.write("Message Payload");
writer.write("Bandwidth (Payload)");
writer.write("Message Payload with Header");
writer.write("Bandwidth (Payload with Header)");
writer.newLine();
for (Signal signal : messages) {
writer.write(signal.getSource());
writer.write(signal.getName());
writer.write(signal.getComponent());
writer.write(Integer.toString(signal.getOccurance()));
writer.write(Integer.toString(signal.getSize()));
writer.write(Float.toString(signal.getBandwidth()));
writer.write(Integer.toString(signal.getSizewithHeader()));
writer.write(Float.toString(signal.getBandwidthWithHeader()));
writer.newLine();
}
writer.flush();
writer.close();
fw.close();
有什麼辦法,使其正確地讀取到數據逐列分開?
編輯
而不是使用緩衝作家的我用CSVReader
庫的Java。 http://www.csvreader.com/java_csv.php 代碼現在是
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
File file = new File(dirName + "\\"+ df.format(new Date()) +"_Statistics.csv");
if (!file.exists())
file.createNewFile();
// Use FileWriter constructor that specifies open for appending
CsvWriter csvOutput = new CsvWriter(new FileWriter(file, true), ',');
//Create Header for CSV
csvOutput.write("Message Source");
csvOutput.write("Message Name");
csvOutput.write("Component");
csvOutput.write("Occurance");
csvOutput.write("Message Payload");
csvOutput.write("Bandwidth (Payload)");
csvOutput.write("Message Payload with Header");
csvOutput.write("Bandwidth (Payload with Header)");
csvOutput.endRecord();
for (Signal signal : messages) {
csvOutput.write(signal.getSource());
csvOutput.write(signal.getName());
csvOutput.write(signal.getComponent());
csvOutput.write(Integer.toString(signal.getOccurance()));
csvOutput.write(Integer.toString(signal.getSize()));
csvOutput.write(Float.toString(signal.getBandwidth()));
csvOutput.write(Integer.toString(signal.getSizewithHeader()));
csvOutput.write(Float.toString(signal.getBandwidthWithHeader()));
csvOutput.endRecord();
}
csvOutput.flush();
csvOutput.close();
它正確格式化數據,但現在的問題是,當我運行創建第二個文件和新的文件包含重複的行,每一行中第一個爲第二次代碼文件中第二個文件中有兩行具有相似的數據。
難道我不是在清理一些資源嗎?
感謝
列應以逗號分隔 – tim
@tim你的意思後,每寫我應該做的writer.write(「」); – Wearybands
你可以這麼做 - 它看起來在列名和數據中都沒有。爲了使文檔正確格式化,每列應以逗號分隔。對於.csv無論如何 – tim