gpt4 book ai didi

java - 如何从文件中逐行读入 JTextArea (GUI)?

转载 作者:行者123 更新时间:2023-12-01 09:40:14 31 4
gpt4 key购买 nike

我正在从一个文件(这是姓名及其联系号码的列表)中读入并将其显示在 GUI 的文本区域中。文件读取良好并显示文本。但我希望文件中的每一行都在 GUI 上占一个新行。所以每个名字和地址都要换行。我该怎么做呢?到目前为止,这是我的代码,但它不会在 GUI 上的新行上显示文件中的每一行。

public void books() throws IOException {
String result = " ";
String line;
LineNumberReader lnr = new LineNumberReader(new FileReader(newFile("books2.txt")));
while ((line = lnr.readLine()) != null) {
result += line;`
}


area1 = new JTextArea(" label 1 ");
area1.setText(result);
area1.setBounds(50, 50, 900, 300);
area1.setForeground(Color.black);
panelMain.add(area1);

}

最佳答案

您实际上不需要逐行阅读它。像这样的事情会做:

String result = new String(Files.readAllBytes(Paths.get("books2.txt")),
StandardCharsets.UTF_8);

这当然需要更多内存:首先读取字节,然后创建字符串。但如果内存是一个问题,那么一次读取整个文件可能不是一个好主意,更不用说在 JTextArea 中显示它了!

它可能无法正确处理不同的行结尾。当您使用 readLine() 时,它会删除该行的所有结尾,无论是 CR LF、LF 还是 CR。上面的方法将按原样读取字符串。所以也许逐行阅读并不是一个坏主意。但我刚刚检查过,JTextArea 似乎可以正确处理 CR LF。但它可能会导致其他问题。

通过逐行方法,我会做类似的事情

String result = String.join("\n",
Files.readAllLines(Paths.get("books2.txt"),
StandardCharsets.UTF_8));

这仍然会删除 EOL 的最后行。如果这很重要(例如,您希望能够将文本光标放在最后一行之后的行上),只需再执行一次 + "\n"

以上所有内容都需要 Java 7/8。

如果您使用的是 Java 6 或其他语言,那么您的做法可能没问题,除了:

  1. LineNumberReader 替换为 BufferedReader - 您不需要行号,对吗?
  2. String result 替换为 StringBuilder result = new StringBuilder(),将 += 替换为 result.append(line)。附加('\n')
  3. 最后使用result.toString()获取字符串。

关于java - 如何从文件中逐行读入 JTextArea (GUI)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511482/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com