Как мне переместить текст из файла в текстовую область?

#java #file #jtextarea

#java #файл #jtextarea

Вопрос:

В этом коде:

 protected void open() {
    if (fc.showOpenDialog(Main.this) == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
    }
}
  

Как я могу получить содержимое file и установить его в вызываемую текстовую область textarea ?

Комментарии:

1. Прочитайте файл в строку (с возможностью простого поиска), затем задайте текст компонента — что у вас не работает?

2. Вам нужна именно текстовая область? Это довольно просто с помощью JEditorPane .

Ответ №1:

Для чтения файла используйте API, предоставляемый всеми компонентами Swing text. Что-то вроде:

 FileReader reader = new FileReader( file );
BufferedReader br = new BufferedReader(reader);
textArea.read( br, null );
br.close();
  

Комментарии:

1. О, здорово — не знал об этом. Хотя вы должны закрыть его в блоке finally 🙂

2. camickr, если файл занимает слишком много времени, это приведет к зависанию графического интерфейса?

3. @nachokk, да, я бы предположил, что так и будет.

Ответ №2:

Я полагаю, вы хотите прочитать его как текст?

Если вы рады использовать стороннюю библиотеку, я бы лично использовал Guava, что делает ее тривиальной:

 // This is assuming the file is UTF-8. If not, change appropriately.
String text = Files.toString(file, Charsets.UTF_8);
textarea.setText(text);
  

Обратите внимание, что при этом файл будет загружен в поток пользовательского интерфейса, который будет зависать во время загрузки пользовательского интерфейса… не очень хорошо, если это очень большой файл, но проще, чем делегирование в отдельный поток.

Комментарии:

1. 1 для делегирования в отдельный поток, поскольку ответ camickr кажется лучше, он выполняется только в edt.