2

JTextArea我有这个程序,它可以让你打开一个文件,并使用以下代码一次将其读入:

 try{
    String fileContents = new Scanner(new File(fileName)).useDelimiter("\\Z").next();
  }catch(FileNotFoundException ex){
    ex.printStackTrace();
  }

  myTextArea.setText(fileContents);

这有效。但我的问题是如何将它读入我的fileContents字符串并且每次我得到一个换行符时仍然让它添加到换行符中?

这是我所拥有的,但这将所有内容放在我的 textArea 中的一行中:

 try{
Scanner contentsTextFile = new Scanner(new File(fileName));
while(contentsTextFile.hasNext()){
    fileContents = contentsTextFile.useDelimiter("\r\n|\n").nextLine(); 
    }

}catch(FileNotFoundException ex){
    ex.printStackTrace();
}

   myTextArea.setText(fileContents);

我想看到的是这行文本使用分隔符换行,一次只读取一行而不是整个文件。

有人可以帮忙吗?

4

2 回答 2

3

最简单的方法是使用JTextComponent.read(Reader,Object)which:

从流初始化。这将创建适合组件类型的模型并从流中初始化模型。默认情况下,这会将模型加载为纯文本。模型的先前内容被丢弃。

于 2013-05-16T13:34:52.260 回答
3

您可以使用 a 逐行读取文件,BufferedReader并使用for each line read的append()方法。JTextArea为方便起见,将其包裹JTextArea在适当大小的 中,如此JScrollPane所示。如果您预计会有任何延迟,请使用 a在后台读取,然后调用.SwingWorkerappend()process()

BufferedReader in = new BufferedReader(new FileReader(fileName));
String s;
while ((s = in.readLine()) != null) {
    myTextArea.append(s + "\n");
}
于 2013-05-16T19:29:10.407 回答