yılında Arabellekli yazar kullanarak bir csv dosyasını yazma. Verilerim doğru yazılmış, ancak verilerin geldiği farklı sütunlara sahip olmak istiyorum. Şu anda tarihin her örneğini bir satırda yazıyor ancak sütunlarla ayrılmıyor.Ben java tamponlu yazar kullanarak bir csv dosyasını yazıyorum Java
kod
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();
düzgün okunabilir hale getirecek şekilde akıllıca veri sütununu ayırmak için herhangi bir yolu var mı nedir? Bunun yerine tamponlu yazar kullanmanın
DÜZENLEME
Ben java için CSVReader
kütüphane kullanmaktadır. http://www.csvreader.com/java_csv.php kod artık Düzgün biçimlendirir
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();
ama 2 kez kodunu 2. bir dosya oluşturulur ve yeni dosya ilk her satır için, yinelenen satırlar içeriyor çalıştırdığınızda sorun artık dosya 2. veride benzer verilerle 2 satır var.
Bazı kaynaklar temizlik değilim mı?
sayesinde bu sütun ne kadar geniş olduğunu bilmek için bir yolu yoktur, çünkü gerçek veri sütunları ile sıraya değil anladığım
Kolonlar virgül ile ayrılmalıdır – tim
her I ("") writer.write yapmalıyım yazma sonra Şunu @tim; – Wearybands
Yapabilirsin - onlar sütun adları eksik ve verilerde görülüyor. Belgenin doğru şekilde biçimlendirilmesi için her bir virgül virgülle sınırlandırılmalıdır. .csv için zaten – tim