2010-06-24 4 views
8

J'ai un fichier csv incomplet qui doit être correctement mis à jour, donc il y a un fichier csv comme ceci:quelle est la meilleure façon de modifier le fichier csv

one,two,three,four,five,six,seven,eight,nine,ten //This is a line(String) 

Naturellement, le fichier est beaucoup plus complexe, mais dans ce format, voici ce que je veux faire insérer new-word,new-word1, new-word3 ou n mots entre sept et huit (ou toute gamme). Comment puis je faire ça? Pseudo-code, code ou exemple serait génial, je n'ai aucune idée de comment commencer même.

MISE À JOUR:

Peut-être que je devrais convertir en tableau ou une sorte de structure de données. Insérez ensuite un nouvel élément à la position définie, déplacez le reste du contenu vers la droite et faites-le pour chaque insertion.

Je ne sais pas si est bonne façon de faire ou comment commencer sa programmation

MISE A JOUR II:

Peut-être lu dans csv dans la liste, la liste divisée en deux listes, premier se terminant par sept. Puis ajouter n mots à la première liste et joindre deux listes à la fin? aussi ne sais pas comment programmer cela

Répondre

5

Jetez un oeil à OpenCSV.

MISE À JOUR: Voici quelques (à peine) pour donner une pseudocode idée générale de la façon dont vous utiliserez OpenCSV pour cela:

CSVReader reader = new CSVReader(new FileReader("old.csv")); 
CSVWriter writer = new CSVWriter(new FileWriter("new.csv")); 
String [] nextLine; 
while ((nextLine = reader.readNext()) != null) { 
    List<String> lineAsList = new ArrayList<String>(Arrays.asList(nextLine)); 
    // Add stuff using linesAsList.add(index, newValue) as many times as you need. 
    writer.writeNext(lineAsList.toArray()); 
} 

Hat-conseil: Peters qui fait remarquer @ Mark que vous ne pouvez pas mettre à jour le résultats de Arrays.asList

+0

@Hank Gay Je ne comprends pas non plus ce que vous avez posté ou ce écrit vos entrées existantes dans un nouveau fichier, je ne vois nulle part ici comment puis-je écrire entre les éléments –

+0

OpenCSV va-t-il échapper correctement les guillemets? –

+0

@ Joe Phillips Je suppose que cela dépend de votre définition de correctement, car il n'y a pas de spécification. C'est un lib simple; Je vous recommande de l'expérimenter et de lire la [FAQ sur sa page d'accueil] (http://opencsv.sourceforge.net/). –

0

Je l'analyserais dans une collection, ajouterais vos articles, puis rendrais le résultat à un csv.

+0

oui, comment inséreriez-vous n éléments à une collection ex: tableau liste entre deux éléments qui sont déjà à l'intérieur –

+1

Vous trouveriez l'objet avant que vous vouliez insérer, obtenir son index, puis insérez les trois choses là-bas? –

+0

Pour ArrayList, utilisez la méthode 'add (int, object)'. –

1

Ce code pseudo-like pourrait aider:

List values = Arrays.asList(line.split(",\s*")); 
List newWords = Arrays.aList(newWordsLine.split(",\s*")); 

values.addAll(7,newWords); 

StringBuffer buf = new StringBuffer(values.get(0)); 
for(v : values.subList(1,values.size()) { 
    buf.append(",",v); 
} 
return buf.toString(); 

ce insérera les newWords après le 7 point sur la ligne

Questions connexes