将.txt文件加载到textarea Java

时间:2014-07-25 22:22:42

标签: java text jtextarea

我有一个加载指定文件的textarea。一切正常,除了只有文件的最后一行输出到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(input.nextLine());
    }

    // Close the file
    input.close();

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

5 个答案:

答案 0 :(得分:3)

那是因为在你的while循环中你正在设置文本,而不是附加到它。

因此,每次获得新的输入行时,都会覆盖最后一行。你最终只剩下最后一行输入。

使用jTextArea1.append(input.nextLine());代替jTextArea.setText(...);

答案 1 :(得分:1)

使用java.util.Scanner中的分隔符,您可以读取整个文件,而不是逐行读取。

Scanner input = new Scanner(f);
input.useDelimiter("\\A");
if (input.hasNext()) {
    jTextArea1.setText(input.next());
}

useDelimiter("\\A") {{1}}中查看详情。

答案 2 :(得分:0)

替换

jTextArea1.setText(input.nextLine());

使用

jTextArea1.append(input.nextLine());

setText()使用参数替换textArea中的所有文本,append()添加到textArea中的文本

答案 3 :(得分:0)

您可以使用StringBuilder将所有输入附加到一起,并使用setText将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();
    }

注意:您可以在java 7之后使用带有资源的try catch块,因此无需手动关闭扫描程序。

了解更多http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

答案 4 :(得分:0)

虽然大多数其他答案在指出使用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();
}

这简化了整个过程...