Java IO: чтение текстовых файлов по мере их просмотра - PullRequest
2 голосов
/ 25 марта 2012

У меня есть текстовый файл, который содержит что-то вроде этого:

Hello, my name is Joe

What is your name?
My name is Jack.

That is good for you.

Единственная проблема заключается в том, что мне нужно загрузить его в JTextArea с помощью метода добавления, чтобы отобразить текст в 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 ]

4 голосов
/ 25 марта 2012

Все JTextComponents имеют возможность чтения в текстовых файлах и записи в текстовые файлы, полностью соблюдая символ новой строки для текущей операционной системы, и часто это выгодно использовать.В вашем случае вы использовали бы метод read(...) JTextArea для чтения в файле, полностью понимая при этом символ новой строки в файловой системе.Примерно так:

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) {
               }
            }
         }
      }
   }
}
3 голосов
/ 25 марта 2012

Добавить новую строку при чтении строк.

Например

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);
}
...