2012-09-03 16 views
8

Estoy tratando de organizar mis datos en un archivo .CSV. Quiero poner mis datos en una fila en particular, así que traté de poner "\ n" pero no funciona. Por favor, ayúdenme a poner datos en una fila en particular. Gracias que de antemano ..Android: ¿Cómo escribir nueva línea en un archivo CSV?

public void writeData(String data,String strFilePath) 
     { 

      PrintWriter csvWriter; 
      try 
      { 

       File file = new File(strFilePath); 
       if(!file.exists()){ 
        file = new File(strFilePath); 
       } 
       csvWriter = new PrintWriter(new FileWriter(file,true)); 


       csvWriter.print(data+","+"hello"); 
       csvWriter.append('\n'); 
       csvWriter.print("world"); 


       csvWriter.close(); 


      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
+1

¿Qué quiere decir con "it is not working"? ¿Qué es exactamente lo que ves? Ser específico al hacer preguntas le dará las respuestas que necesita. –

+1

Por ejemplo, si se agrega "first, second \ nthird" en csv, solo "first" y "second" están visibles ... no podemos ver "third" en el archivo csv. Espero que este sea el problema con los editores de Android. Transfiero mi .csv a la PC de Windows, incluso el "tercero" es visible en la nueva fila. –

Respuesta

8

código se ve bien, y estoy seguro de la nueva línea es escrito correctamente en el archivo. La única razón por la que puedo pensar es que abrió el archivo con un editor que no trata el \n como un separador de línea, trata \r\n como un separador de línea (como el Bloc de notas en Windows).

Así que puede escribir la nueva línea con write.print("\r\n"), o simplemente abrir el archivo con algunos otros editores como vim. No importa qué editor use para abrir el archivo, el carácter de nueva línea está ahí.

+0

Estoy tratando de abrir con excel ... no funciona como dijiste ... por favor guíame a través de buenos editores que pueden aparecer "\ n" –

+0

¿Has intentado abrir el archivo desde Excel mediante 'Archivo -> Importar -> CSV File'. No debe abrir directamente el archivo con Excel, que puede no ser capaz de detectar que se trata de un archivo CSV. Para los editores, 'notepad ++', o comerciales como 'EditPlus' o' UltraEdit' tratarán '\ n' como un separador de línea. – neevek

+0

Finalmente funcionó para mí con csvWriter.print ("\ r \ n"). @ Neevek Gracias –

1

probar el siguiente código (usando StringBuffer) - una secuencia mutable flujos seguros de caracteres:

public void writeData(String data, String strFilePath) { 

    PrintWriter csvWriter; 
    try { 
     /*1. declare stringBuffer*/ 
     StringBuffer oneLineStringBuffer = new StringBuffer(); 

     File file = new File(strFilePath); 
     if (!file.exists()) { 
      file = new File(strFilePath); 

     } 
     csvWriter = new PrintWriter(new FileWriter(file, true)); 

     /*2. append to stringBuffer*/ 
     oneLineStringBuffer.append(data + "," + "hello"); 
     oneLineStringBuffer.append("\n"); 
     oneLineStringBuffer.append("world"); 

     /*3. print to csvWriter*/ 
     csvWriter.print(oneLineStringBuffer); 

     csvWriter.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
2

Los archivos CSV no son tan fáciles de crear como pueden parecer. Me encontré con muchos problemas cuando intentaba escribir un analizador/grabador CSV rápido.

Simplemente use OpenCSV y resuelva todos sus problemas al instante.

Usando OpenCSV se puede hacer algo como esto:

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t'); 
// feed in your array (or convert your data to an array) 
String[] entries = "first#second#third".split("#"); 
writer.writeNext(entries); 
1
  1. tratar de limpiar su corriente antes de cerrarlo csvWriter.flush()
  2. en lugar de utilizar de impresión, pruebe println
1

Sólo tienes para cambiar csvWriter.print("world"); a csvWriter.println("world");. La próxima impresión será en la próxima línea nueva.

public void writeData(String data,String strFilePath) 
      { 

       PrintWriter csvWriter; 
       try 
       { 

        File file = new File(strFilePath); 
        if(!file.exists()){ 
         file = new File(strFilePath); 
        } 
        csvWriter = new PrintWriter(new FileWriter(file,true)); 


        csvWriter.println(data+","+"hello"); 
        csvWriter.print("world"); 


        csvWriter.close(); 


       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
Cuestiones relacionadas