2010-11-01 19 views
5

Dosyaya bir dize yazmak için aşağıdaki işlevi kullanıyorum. Dize yeni satır karakterleriyle biçimlendirilmiştir. ÖrneğinJava: BufferedWriter 'in yeni satır atlaması

, ben ne zaman çıktı dosyasının satır karakterlerini görmek mümkün duyuyorum text = "sometext\nsomemoretext\nlastword";

: Ben not defteri metin açtığınızda

type outputfile.txt 

Ancak, ben göremiyorum yeni satırların. Her şey tek bir satırda ortaya çıkıyor.

Bu neden oluyor? Not Defteri'nde doğru şekilde (formatlanmış) görebilmek için metni düzgün yazdığımdan nasıl emin olabilirim. pencere üzerinde

private static void FlushText(String text, File file) 
    { 
     Writer writer = null; 
     try 
     {   
      writer = new BufferedWriter(new FileWriter(file)); 
      writer.write(text); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      try 
      { 
       if (writer != null) 
       { 
        writer.close(); 
       } 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    } 

cevap

10

, yeni satır satır besleme (CR + LF), yani \r\n ardından satır başında olarak, geleneksel olarak temsil edilir. Newline wikipedia page itibaren

:

Metin editörleri sık sık farklı satır biçimleri arasında bir metin dosyası dönüştürmek için kullanılır; en modern editörleri, en az kullanarak en az farklı ASCII CR/LF kurallarını kullanarak dosyaları okuyabilir ve yazabilir. Standart Windows düzenleyicisi Not Defteri, bunlardan bir tanesi değil, (Wordpad olmasına rağmen). Yeni bir satırı temsil bir platformdan bağımsız bir şekilde istiyorsanız

text = "sometext\r\nsomemoretext\r\nlastword"; 

, bir BufferedWriter özgü özel durum için System.getProperty("line.separator"); kullanın:

Not Defteri dize değiştirirseniz doğru çıktı göstermesi gerekir , bemace'ın önerdiği şeyle git.

+3

Oh. Şimdi System.getProperty ("line.separator") kullanıyorum; Yazmadan önce tam dizeyi doldurmak için BufferedWriter.newLine() kullanamazsınız. – devnull

+0

Bu beni kurtardı. Ben Wicket ile çalışıyorum ve BufferedWriter.newLine() yerel olarak çalıştı, ama tomcat üzerinde .. \ r \ n çalıştı ve çekicilik gibi çalıştı .. Teşekkürler! – eaglei22

7

Bu nedenle, satır ayırıcılarınızı kodlamak yerine BufferedWriter.newLine() kullanmalısınız. Şu anda üzerinde çalıştığınız platform için doğru sürümü seçmeniz gerekecek.