【发布时间】:2013-07-24 14:30:42
【问题描述】:
我将使用 java 创建 CSV 文件。以下是部分代码:
try{
FileWriter writer = new FileWriter(sFileName);
writer.append("Title");
for(StoredArticle sa3:historyFile.keySet()){
for(String k3:sa3.getTimeAndPopularity().keySet()){
writer.append(',');
writer.append(k3);
}
}
writer.append('\n');
问题是我成功创建了 CSV 文件。在 for 循环中,k3 是以格式2013/07/22 15:40:23. 呈现的时间,但无法显示秒“23”。其他的表现不错。有什么问题请帮忙。
这是我全班的代码
package uk.ac.ncl.fanyaoxia.createCSV;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import uk.ac.ncl.fanyaoxia.monitor.MonitorRecentUpdates;
import uk.ac.ncl.fanyaoxia.monitor.StoredArticle;
import uk.ac.ncl.fanyaoxia.webpagefetch.ReadXml;
public class CreateCSVFile {
private static Map < StoredArticle, ReadXml > historyFile;
public CreateCSVFile() {
historyFile = new HashMap < StoredArticle, ReadXml > ();
}
public void createFile() {
generateCsvFile("HistoryTable.csv");
}
private static void generateCsvFile(String sFileName) {
MonitorRecentUpdates csvFile = new MonitorRecentUpdates();
historyFile = csvFile.getMap();
try {
FileWriter writer = new FileWriter(sFileName);
writer.append("Title");
for (StoredArticle sa3: historyFile.keySet()) {
for (String k3: sa3.getTimeAndPopularity().keySet()) {
writer.append(',');
writer.append(k3);
}
}
writer.append('\n');
for (StoredArticle sa3: historyFile.keySet()) {
writer.append(sa3.getStoredTitle());
for (String k3: sa3.getTimeAndPopularity().keySet()) {
writer.append(',');
writer.append(sa3.getTimeAndPopularity().get(k3).toString());
}
writer.append('\n');
}
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
为什么不使用the available CSV libraries之一?
-
首先您必须检查(或至少提供)您收藏的内容。如果将时间打印到控制台,它是否正确显示?
-
@assylias 因为 csv 非常简单,不需要依赖外部库,您必须在其中检查许可证条件。写一个“,”和一个新行,这就是你在 CSV 中所需要的
-
@AlexWien 没那么简单。例如,您的数据可能包含带有逗号的字符串,您需要将其包含在引号等中。最后它不是很复杂,但我没有看到导入一个小依赖项来为我处理它的任何问题,所以我可以继续前进。
-
@AlexWien 我只是说将
<dependency><groupId>net.sf.opencsv</groupId><artifactId>opencsv</artifactId></dependency>添加到我的maven 项目中更快更安全。在某个阶段,您可能也想解析文件,这使得处理转义引号变得更加困难。在你意识到之前,你还有 400 行需要维护。但这是无休止的讨论。