2012-03-25 5 views
2

ich eine Textdatei haben, die so etwas wie dies enthält:Java IO: Lesen von Textdateien, wie sie gesehen werden

Hello, my name is Joe 

What is your name? 
My name is Jack. 

That is good for you. 

Das einzige Problem ist, dass ich es in ein JTextArea mit der Methode append laden müssen, um anzuzeigen der Text in einem JScrollPane etwa so:

JTextArea ta = new JTextArea(); 
JScrollPane sp = new JScrollPane(ta); 

Aber wenn ich die Datei in den Textbereich zu lesen, zeigt der Textbereich etwas wie folgt aus:

Hello, my name is JoeWhat is your name?My name is Jack.That is good for you. 

Der BufferedReader liest niemals neue Zeilen (\ n) in die JTextArea ein. Wie kann ich dem Leser die Leerzeichen und Leerzeilen so hinzufügen, wie sie in der Datei erscheinen? Wenn jemand helfen kann, würde ich es begrüßen. Vielen Dank!

+0

Wenn Sie 'BufferedReader.readLine()' Methode, sie die Linie-termination Zeichen der Zeile verbraucht er liest. Daher müssen Sie das '\ n' manuell anhängen, nachdem Sie es in die gelesene Zeichenfolge aufgerufen haben. Oder Sie können 'BufferedReader.read()' stattdessen in einen Puffer einfügen. http://stackoverflow.com/questions/4758525/carriage-return-and-new-line-with-java-and-readline – ecle

+0

poste deinen Codeblock, der die Textdatei liest, um besseres Verständnis zu haben. – tsatiz

Antwort

4

Alle JTextComponents haben die Möglichkeit, Textdateien eingelesen und Schreiben von Dateien in Text unter strikter Beachtung der Newline-Zeichen für das aktuelle Betriebssystem zu respektieren, und es ist oft von Vorteil, diese zu verwenden. In Ihrem Fall würden Sie die Methode read(...) von JTextArea verwenden, um die Datei einzulesen, während Sie das native Newline-Zeichen des Dateisystems vollständig verstehen. So etwas wie so:

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

Oder für ein vollständigeres Beispiel:

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) { 
       } 
      } 
     } 
     } 
    } 
} 
+0

Das ist noch besser! Vielen Dank – MrDrProfessorTyler

+0

Gern geschehen. –

3

Fügen Sie die Zeilenschaltung beim Lesen von Zeilen ein.

Zum Beispiel

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