将.txt文件加载到textarea Java
我有一个加载指定文件的文本区域。除了只将文件的最后一行输出到textarea之外,其他一切都运行良好将.txt文件加载到textarea Java,java,text,jtextarea,Java,Text,Jtextarea,我有一个加载指定文件的文本区域。除了只将文件的最后一行输出到textarea之外,其他一切都运行良好 File f = new File(this.path); try { // Create a Scanner for the file Scanner input = new Scanner(f); // Read text from the file while (input.hasNext()) { jTextArea1.setText(
File f = new File(this.path);
try {
// Create a Scanner for the file
Scanner input = new Scanner(f);
// Read text from the file
while (input.hasNext()) {
jTextArea1.setText(input.nextLine());
}
// Close the file
input.close();
} catch (FileNotFoundException fe) {
fe.printStackTrace();
}
这是因为在while循环中,您正在设置文本,而不是附加到文本 因此,每次你得到一个新的输入行,你就会覆盖最后一行。最终只剩下最后一行输入
使用
jTextArea1.append(input.nextLine())代码>而不是jTextArea.setText(…)代码>这是因为在while循环中,您正在设置文本,而不是附加到文本
因此,每次你得到一个新的输入行,你就会覆盖最后一行。最终只剩下最后一行输入
使用jTextArea1.append(input.nextLine())代码>而不是jTextArea.setText(…)代码>更换
jTextArea1.setText(input.nextLine());
与
setText()
用参数替换textArea中的所有文本,append()
添加到textArea中的文本
jTextArea1.setText(input.nextLine());
与
setText()
用参数替换textArea中的所有文本,append()
添加到textArea中的文本您可以使用StringBuilder将所有输入附加在一起,并在末尾使用StringBuilder Varialbe的结果设置文本
File f = new File(this.path);
StringBuilder sb = StringBuilder();
try( Scanner input = new Scanner(f)) {
// Read text from the file
while (input.hasNext()) {
sb.append(input.nextLine());
}
jTextArea1.setText(sb);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
}
注意:您可以在Java7之后对资源使用try-catch块,所以不需要手动关闭扫描仪
阅读更多信息您可以使用StringBuilder将所有输入附加在一起,并在末尾设置带有StringBuilder变量结果的文本
File f = new File(this.path);
StringBuilder sb = StringBuilder();
try( Scanner input = new Scanner(f)) {
// Read text from the file
while (input.hasNext()) {
sb.append(input.nextLine());
}
jTextArea1.setText(sb);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
}
注意:您可以在Java7之后对资源使用try-catch块,所以不需要手动关闭扫描仪
阅读更多使用java.util.Scanner
中的分隔符,您可以读取整个文件,而不是逐行读取
Scanner input = new Scanner(f);
input.useDelimiter("\\A");
if (input.hasNext()) {
jTextArea1.setText(input.next());
}
有关usedimiter(\\A”)
的详细信息,请参阅java.util.Scanner
中的定界符,您可以读取整个文件,而不是逐行读取
Scanner input = new Scanner(f);
input.useDelimiter("\\A");
if (input.hasNext()) {
jTextArea1.setText(input.next());
}
有关useDelimiter(\\A”)
的详细信息,请参见中的。虽然大多数其他答案都正确地指出了使用setText
而不是appendText
,但事实是,JTextArea
有一种加载文本的方便方法
JTextArea ta = new JTextArea();
try (BufferedReader br = new BufferedReader(new FileReader(new File("...")))) {
ta.read(br, null);
} catch (IOException exp) {
exp.printStackTrace();
}
这简化了整个过程。虽然大多数其他答案都正确地指出使用setText
而不是appendText
,但事实是,JTextArea
有一种加载文本的方便方法
JTextArea ta = new JTextArea();
try (BufferedReader br = new BufferedReader(new FileReader(new File("...")))) {
ta.read(br, null);
} catch (IOException exp) {
exp.printStackTrace();
}
这简化了整个过程…对不起,我的意思是唯一显示的一行是最后一行。对不起,我的意思是唯一显示的一行是最后一行。你是对的,它是在每行后面替换文本。欣赏comment@user3424451我想知道我的方法是否也有效。你能试试吗?当然,我会试试的。你是对的,它在每行后面都替换了文本。欣赏comment@user3424451我想知道我的方法是否也有效。你能试试吗?当然,我会试试的