我有这个程序可以让你打开一个文件,并使用以下代码一次性将其读入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);
我希望看到的是,这一行文本使用的分隔符只能一次读取一行而不是整个文件。
有人可以帮忙吗?
答案 0 :(得分:3)
最简单的方法是使用JTextComponent.read(Reader,Object)
:
从流初始化。这将创建适合该组件的类型的模型,并从流初始化模型。默认情况下,这会将模型加载为纯文本。该模型的先前内容将被丢弃。
答案 1 :(得分:3)
您可以使用BufferedReader
逐行阅读文件,并使用append()
JTextArea
方法读取每一行。为方便起见,请将JTextArea
包裹在尺寸合适的JScrollPane
中,如图here所示。如果您预计会有任何延迟,请使用SwingWorker
在后台阅读,并在append()
中致电process()
。
BufferedReader in = new BufferedReader(new FileReader(fileName));
String s;
while ((s = in.readLine()) != null) {
myTextArea.append(s + "\n");
}