Come scrivere un nuovo carattere di linea in un file in Java

Ho una stringa che contiene nuove righe. Mando questa stringa ad una funzione per scrivere la stringa in un file di testo come:

public static void writeResult(String writeFileName, String text) { try { FileWriter fileWriter = new FileWriter(writeFileName); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(text); // Always close files. bufferedWriter.close(); } catch(IOException ex) { System.out.println("Error writing to file '"+ writeFileName + "'");} } //end writeResult function 

Ma quando apro il file, lo trovo senza nuove righe. Quando visualizzo il testo sullo schermo della console, viene visualizzato con nuove linee. Come posso scrivere il carattere della nuova riga nel file di testo.

EDIT: si supponga che questo sia il text dell’argomento che ho inviato alla funzione precedente:

 I returned from the city about three o'clock on that may afternoon pretty well disgusted with life. I had been three months in the old country, and was 

Come scrivere questa stringa così com’è (con nuove righe) nel file di testo. La mia funzione scrive la stringa in una riga. Puoi fornirmi un modo per scrivere il testo nel file incluse le nuove linee?

EDIT 2: il testo è originariamente in un file .txt. Ho letto il testo usando:

 while((line = bufferedReader.readLine()) != null) { sb.append(line); //append the lines to the string sb.append('\n'); //append new line } //end while 

dove sb è un StringBuffer

In EDIT 2:

 while((line = bufferedReader.readLine()) != null) { sb.append(line); //append the lines to the string sb.append('\n'); //append new line } //end while 

stai leggendo il file di testo e aggiungendo una nuova riga ad esso. Non aggiungere newline, che non mostrerà una nuova riga in alcuni semplici editor di Windows come il Blocco note. Aggiungere invece la stringa separatore di riga specifica del sistema operativo utilizzando:

sb.append(System.lineSeparator()); ( per Java 1.7 e 1.8 ) o sb.append(System.getProperty("line.separator")); ( Java 1.6 e sotto )

In alternativa, in seguito è ansible utilizzare String.replaceAll() per sostituire "\n" nella stringa creata nello StringBuffer con il carattere di nuova riga specifico del sistema operativo:

String updatedText = text.replaceAll("\n", System.lineSeparator())

ma sarebbe più efficiente aggiungerla mentre stai costruendo la stringa, piuttosto che aggiungere '\n' e sostituirla in seguito.

Infine, come sviluppatore, se utilizzi il Blocco note per visualizzare o modificare i file, dovresti lasciarlo, poiché ci sono strumenti molto più efficaci come Notepad ++ o il tuo IDE Java preferito.

La class BufferedWriter offre un metodo newLine() . L’utilizzo di questo garantirà l’indipendenza dalla piattaforma.

SOLUZIONE SEMPLICE

 File file = new File("F:/ABC.TXT"); FileWriter fileWriter = new FileWriter(file,true); filewriter.write("\r\n"); 

bufferedWriter.write(text + "\n"); Questo metodo può funzionare, ma il carattere della nuova riga può essere diverso tra le piattaforms, quindi in alternativa, è ansible utilizzare questo metodo:

 bufferedWriter.write(text); bufferedWriter.newline(); 

Dividi la stringa in array di stringhe e scrivi usando il metodo precedente (presumo che il tuo testo contenga \ n per ottenere una nuova riga)

 String[] test = test.split("\n"); 

e l’interno di un ciclo

 bufferedWriter.write(test[i]); bufferedWriter.newline(); 

Metti questo codice dove vuoi inserire una nuova riga:

 bufferedWriter.newLine(); 

Questo approccio funziona sempre per me:

 String newLine = System.getProperty("line.separator"); String textInNewLine = "this is my first line " + newLine + "this is my second line "; 

Ecco uno snippet che ottiene il carattere di fine riga predefinito per la piattaforma corrente. Usa System.getProperty("os.name") e System.getProperty("os.version"). Esempio:

 public static String getSystemNewline(){ String eol = null; String os = System.getProperty("os.name").toLowerCase(); if(os.contains("mac"){ int v = Integer.parseInt(System.getProperty("os.version")); eol = (v <= 9 ? "\r" : "\n"); } if(os.contains("nix")) eol = "\n"; if(os.contains("win")) eol = "\r\n"; return eol; } 

Dove eol è la newline