Créer le fichier CSV à l'aide de java

Je vais créer des fichiers CSV à l'aide de java. Voici une partie du code:

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');

Le problème est que je suis parvenu à créer le fichier CSV. Et dans la boucle de k3 est le moment présenté comme format 2013/07/22 15:40:23. Mais les secondes "23" ne peuvent pas être affichés. Les autres sont montrant une bonne. quel est le problème s'il vous plaît aider.

C'est le code de ma classe

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();
}
}
}
Pourquoi ne pas utiliser l'un des le disponible CSV bibliothèques?
D'abord vous devez avoir à vérifier (ou au moins fournir) le contenu de vos collections. Si vous imprimez le temps à la console, fait-il correctement?
parce que les csv sont tellement simples qu'il n'est pas nécessaire d'avoir une dépendance à une source externe de lib, où vous avez pour vérifier la condition de licence. Wrting un "," et une nouvelle ligne, c'est tout ce dont vous avez besoin dans CSV
Pas aussi simple que cela. Par exemple, vos données peuvent contenir des chaînes de caractères avec des virgules à l'intérieur, vous devez inclure dans le devis etc. En fin de compte, il n'est pas très compliqué, mais je ne vois pas de problèmes dans l'importation d'une petite dépendance à gérer pour moi, afin que je puisse passer.
Je dis juste que l'ajout de <dependency><groupId>net.sf.opencsv</groupId><artifactId>opencsv</artifactId></dependency> à mon projet maven est plus rapide et plus sûr. Et à un certain stade, vous aurez probablement envie d'analyser les fichiers, ce qui permet de traiter avec d'échapper les guillemets un peu plus difficile. Et avant que vous vous rendez compte, vous avez plus de 400 lignes à maintenir. Mais c'est une discussion sans fin.

OriginalL'auteur wadefanyaoxia | 2013-07-24