[英]How to read from a file into a JTextArea (GUI) line by line?
我正在從一個文件(這是名稱及其聯系方式的列表)中讀取內容,並將其顯示在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()
,它將readLine()
所有結尾的行,無論是CR LF,LF還是CR。 上面的方法將按原樣讀取字符串。 因此,也許逐行閱讀它並不是一個壞主意。 但我只是checked- JTextArea
似乎處理CR LF所有權利。 但是,這可能會導致其他問題。
使用逐行方法,我會做類似的事情
String result = String.join("\n",
Files.readAllLines(Paths.get("books2.txt"),
StandardCharsets.UTF_8));
這仍然會剝離EOL的最后一行。 如果那很重要(例如,您希望能夠將文本光標放在最后一個之后的行上),則再做一個+ "\\n"
。
以上所有要求Java 7/8。
如果您使用的是Java 6或類似的東西,那么您的方式可能還可以,除了:
BufferedReader
替換LineNumberReader
您不需要行號,對嗎? String result
替換為StringBuilder result = new StringBuilder()
,將+=
替換為result.append(line).append('\\n')
。 result.toString()
獲取字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.