Java IO: чтение текстовых файлов по мере их просмотра
У меня есть текстовый файл, который содержит что-то вроде этого:
Hello, my name is Joe
What is your name?
My name is Jack.
That is good for you.
Единственная проблема заключается в том, что мне нужно загрузить его в JTextArea с помощью метода append, чтобы отобразить текст в JScrollPane следующим образом:
JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);
Но когда я читаю файл в текстовой области, текстовая область отображает что-то вроде этого:
Hello, my name is JoeWhat is your name?My name is Jack.That is good for you.
BufferedReader никогда не читает в новой строке (\n) в JTextArea. Как я могу заставить читателя добавлять пробелы и пустые строки, как они появляются в файле? Если кто-то может помочь, я был бы признателен. Спасибо!
2 ответа
Все JTextComponents имеют возможность чтения в текстовых файлах и записи в текстовые файлы, полностью соблюдая при этом символ новой строки для текущей операционной системы, и часто это выгодно использовать. В вашем случае вы бы использовали JTextArea's read(...)
метод для чтения в файле при полном понимании нативного символа новой строки файловой системы. Примерно так:
BufferedReader br = new BufferedReader(new FileReader(file));
textArea.read(br, null);
Или для более полного примера:
import java.io.*;
import javax.swing.*;
public class TextIntoTextArea {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
private static void createAndShowGui() {
JFileChooser fileChooser = new JFileChooser();
int response = fileChooser.showOpenDialog(null);
if (response == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
final JTextArea textArea = new JTextArea(20, 40);
textArea.read(br, null); // here we read in the text file
JOptionPane.showMessageDialog(null, new JScrollPane(textArea));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
}
}
}
}
}
}
Добавьте новую строку при чтении строк.
Например
String output = "";
try {
BufferedReader br = new BufferedReader(new FileReader(args[i]));
while ((thisLine = br.readLine()) != null) {
thisLine += "\n";
output += thisLine;
}
} // end try
catch (IOException e) {
System.err.println("Error: " + e);
}