2012-09-03 25 views
8

Próbuję zorganizować moje dane w .CSV file.I chcesz umieścić moje dane w danym rzędzie więc starałem oddanie „\ n”, ale nie jest working.Please mi pomóc we wprowadzaniu danych do konkretnego row.Thank Ci z góry ..Android: Jak napisać nową linię w pliku 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

Co masz na myśli mówiąc "to nie działa"? Co dokładnie widzisz? Będąc specyficznym w zadawaniu pytań, otrzymasz odpowiedzi, których potrzebujesz. –

+1

Na przykład, jeśli "pierwszy, drugi \ nthird" jest dodawany do csv, widoczne są tylko "pierwsze" i "drugie" .. nie możemy wyświetlić "trzeciego" w pliku csv. Mam nadzieję, że jest to problem z edytorami android. Przesyłam plik .csv do komputera z systemem Windows, nawet "trzeci" jest widoczny w nowym wierszu. –

Odpowiedz

8

kod wygląda dobrze, i jestem pewien, że to znak nowej linii poprawnie napisane w pliku. Jedynym powodem, że mogę myśleć, że jesteś otwarty plik w edytorze, który nie traktuje \n jako separator linii, traktuje \r\n parę jako separator linii (jak Notatnik w systemie Windows).

Możesz więc napisać znak nowej linii za pomocą write.print("\r\n") lub po prostu otworzyć plik z innymi edytorami, takimi jak vim. Bez względu na to, jakiego edytora używasz do otwarcia pliku, istnieje znak nowej linii.

+0

Próbuję otworzyć z excel..its nie działa jak u powiedział ... Proszę prowadź mnie przez dobrych redaktorów, które mogą pokazać się „\ n” –

+0

Czy próbowałeś otwierania pliku z programu Excel przez 'File -> Import -> Plik CSV ". Nie należy bezpośrednio otwierać pliku za pomocą programu Excel, który może nie być w stanie wykryć, że jest to plik CSV. W przypadku edytorów 'notepad ++ 'lub komercyjne, takie jak' EditPlus' lub 'UltraEdit', będą traktować' \ n' jako separator linii. – neevek

+0

Wreszcie pracował dla mnie z csvWriter.print ("\ r \ n"). @ Neevek Dziękuję –

1

Spróbuj następujący kod (używając StringBuffer) - jest wątek bezpieczne, zmienny ciąg znaków:

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

pliki CSV nie są tak łatwe do tworzenia, jak mogłoby się wydawać. Podczas próby napisania szybkiego parsera/pisarza CSV napotkałem na wiele problemów.

Wystarczy użyć OpenCSV i rozwiązać wszystkie swoje problemy natychmiast.

Korzystanie OpenCSV można zrobić coś takiego:

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. spróbować przepłukać strumieniem przed zamknięciem go csvWriter.flush()
  2. zamiast za pomocą drukowania, spróbuj println
1

Trzeba tylko zmienić csvWriter.print("world"); na csvWriter.println("world");. Następny wydruk będzie w następnej nowej linii.

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(); 
       } 
      } 
Powiązane problemy