2012-03-25 64 views
2

我有一個包含像這樣的文本文件:的Java IO:讀取文本文件,因爲它們被認爲

Hello, my name is Joe 

What is your name? 
My name is Jack. 

That is good for you. 

唯一的問題是,我必須把它加載到與append方法來顯示一個JTextArea在JScrollPane文本像這樣:

JTextArea ta = new JTextArea(); 
JScrollPane sp = new JScrollPane(ta); 

但是,當我讀文件到文本區域,文本區域會顯示這樣的事情:

Hello, my name is JoeWhat is your name?My name is Jack.That is good for you. 

BufferedReader從不讀入換行(\ n)到JTextArea中。我怎麼能讓讀者添加空格和空行,因爲它們出現在文件中?如果任何人都可以幫助,我將不勝感激。謝謝!

+0

如果你使用'BufferedReader.readLine()'方法,它消耗它讀取行的行終止符。所以你必須在將它調用到讀取字符串後手動追加'\ n'。或者,你可以使用BufferedReader.read()來代替緩衝區。 http://stackoverflow.com/questions/4758525/carriage-return-and-new-line-with-java-and-readline – ecle 2012-03-25 03:30:49

+0

發佈您的代碼塊,讀取文本文件有更好的理解。 – tsatiz 2012-03-25 03:31:30

回答

4

所有JTextComponents要讀的文本文件,並寫入文本文件,同時充分尊重換行符當前操作系統的能力,它往往是有利的,用這個。在你的情況下,你可以使用JTextArea的read(...)方法來讀取文件,同時充分理解文件系統的本地新行字符。事情是這樣:

BufferedReader br = new BufferedReader(new FileReader(file)); 
textArea.read(br, null); 

或者一個更完整的例子:

import java.io.*; 
import javax.swing.*; 

public class TextIntoTextArea { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 

    private static void createAndShowGui() { 
     JFileChooser fileChooser = new JFileChooser(); 
     int response = fileChooser.showOpenDialog(null); 
     if (response == JFileChooser.APPROVE_OPTION) { 
     File file = fileChooser.getSelectedFile(); 
     BufferedReader br = null; 
     try { 
      br = new BufferedReader(new FileReader(file)); 
      final JTextArea textArea = new JTextArea(20, 40); 

      textArea.read(br, null); // here we read in the text file 

      JOptionPane.showMessageDialog(null, new JScrollPane(textArea)); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) { 
       } 
      } 
     } 
     } 
    } 
} 
+0

這就更好了!非常感謝您 – MrDrProfessorTyler 2012-03-25 03:35:42

+0

不客氣。 – 2012-03-25 03:37:41

3

閱讀行時追加換行符。

例如

String output = ""; 
try { 
    BufferedReader br = new BufferedReader(new FileReader(args[i])); 
    while ((thisLine = br.readLine()) != null) { 
     thisLine += "\n"; 
     output += thisLine; 
    } 
} // end try 
catch (IOException e) { 
    System.err.println("Error: " + e); 
} 
相關問題