2012-03-25 51 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); 
}