2010-06-24 14 views
8

Tengo un archivo csv incompleto que necesita ser actualizado con precisión, por lo que no es archivo csv como esto:¿cuál es la mejor manera de editar el archivo csv

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

Naturalmente el archivo es mucho más compleja, pero en este formato, aquí es lo que quiero hacer insertar new-word,new-word1, new-word3 o n palabras entre siete y ocho (o cualquier rango). ¿Cómo puedo hacer eso?

Pseudocódigo, código o ejemplo sería genial, no tengo ni idea de cómo empezar.

ACTUALIZACIÓN:

Tal vez debería convertir esto en matriz o algún tipo de estructura de datos. Luego inserte el nuevo elemento en la posición determinada, desplace el resto del contenido hacia la derecha y haga eso para cada inserción.

No sé si es camino correcto a seguir o cómo empezar a programar se

ACTUALIZACIÓN II:

Tal vez leído en csv en la lista, lista dividida en dos listas, una primera terminando con siete. ¿Luego agrega n palabras a la primera lista y une dos listas al final? también no sé cómo programar esto

Respuesta

5

Eche un vistazo a OpenCSV.

ACTUALIZACIÓN: Aquí hay algunos pseudocódigo (apenas) para dar una idea general de cómo se usaría para este OpenCSV:

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()); 
} 

Sombrero de punta: @ Marcos Peters quien señala que no se puede actualizar la resultados de Arrays.asList

+0

@Hank que gay que o bien no entiende lo que has enviado o este escribe sus entradas existentes en un nuevo archivo, no veo en ningún lugar aquí ¿cómo puedo escribir entre los elementos –

+0

¿OpenCSV escapará las comillas dobles correctamente? –

+0

@Joe Phillips Supongo que eso depende de su definición de correctamente, ya que no hay especificaciones. Es una lib directa; Te recomiendo que experimentes con él y leas las [Preguntas frecuentes en su página de inicio] (http://opencsv.sourceforge.net/). –

0

Lo analizaría en una colección, agregaría sus artículos, luego lo volvería a presentar a un csv.

+0

sí, cómo insertaría n elementos en cualquier colección, por ejemplo: lista de arreglos entre dos elementos que ya están dentro de –

+1

¿Encontraría el objeto antes de insertarlo, obtendría su índice y luego insertaría las tres cosas allí? –

+0

Para ArrayList, use el método 'add (int, object)'. –

1

Este código de pseudo-como podría ayudar:

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

Se trata de introducir los newWords después del séptimo artículo en la línea

Cuestiones relacionadas