Cómo escribir un nuevo carácter de línea en un archivo en Java

Tengo una cadena que contiene nuevas líneas. Envío esta cadena a una función para escribir la cadena en un archivo de texto como:

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 

Pero cuando abro el archivo, lo encuentro sin ninguna línea nueva. Cuando visualizo el texto en la pantalla de la consola, se muestra con nuevas líneas. ¿Cómo puedo escribir el nuevo carácter de línea en el archivo de texto?

EDITAR: Supongamos que este es el text argumento que envié a la función anterior:

 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 

Cómo escribir esta cadena tal como está (con nuevas líneas) en el archivo de texto. Mi función escribe la cadena en una línea. ¿Puede proporcionarme una forma de escribir el texto en el archivo, incluidas las nuevas líneas?

EDIT 2: El texto está originalmente en un archivo .txt. Leo el texto usando:

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

donde sb es un StringBuffer

En EDIT 2:

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

está leyendo el archivo de texto y añadiéndole una nueva línea. No anexe la nueva línea, que no mostrará una línea nueva en algunos editores simples de Windows como el Bloc de notas. En su lugar, agregue la cadena del separador de línea específica del sistema operativo mediante:

sb.append(System.lineSeparator()); ( para Java 1.7 y 1.8 ) o sb.append(System.getProperty("line.separator")); ( Java 1.6 y abajo )

Alternativamente, más tarde puede usar String.replaceAll() para reemplazar "\n" en la cadena construida en StringBuffer con el carácter de nueva línea específico del sistema operativo:

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

pero sería más eficiente agregarlo mientras está construyendo la cadena, que agregar '\n' y reemplazarlo más tarde.

Finalmente, como desarrollador, si está usando un bloc de notas para ver o editar archivos, debe soltarlo, ya que existen herramientas mucho más capaces como Notepad ++ o su IDE Java favorito.

La clase BufferedWriter ofrece un método newLine() . Usar esto asegurará la independencia de la plataforma.

SOLUCIÓN SIMPLE

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

bufferedWriter.write(text + "\n"); Este método puede funcionar, pero el nuevo carácter de línea puede ser diferente entre plataformas, por lo que alternativamente, puede usar este método:

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

Divida la cadena en el conjunto de cadenas y escriba usando el método anterior (supongo que su texto contiene \ n para obtener una nueva línea)

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

y el interior de un bucle

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

Coloque este código donde desee insertar una nueva línea:

 bufferedWriter.newLine(); 

Este enfoque siempre me funciona:

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

Aquí hay un fragmento que obtiene el carácter predeterminado de nueva línea para la plataforma actual. Use System.getProperty("os.name") y System.getProperty("os.version"). Ejemplo:

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

Donde eol es la nueva línea