2016-04-28 15 views
0

Ich habe die folgende Textdatei. Ich lese jede Zeile auf einmal und schiebe die ganze Zeile in einen String. Momentan liest mein Code nur Zeile für Zeile ohne Rücksicht auf irgendwelche Leerzeichen.Java lesen mehrzeilige Textdatei, fügen Sie Trennzeichen am Ende jeder Zeile nach dem letzten Zeichen

random text wird randomtext. Gibt es eine Möglichkeit, nach dem letzten Zeichen in der Zeile ein Leerzeichen einzufügen? Ich habe den folgenden Code ausprobiert und es funktioniert nicht.

d = d.replaceAll("\n", " ");

Textfile.txt

Text random text random numbers etc. This is a random 
text file. 
+0

Wie werden Sie die Zeilen zu lesen? –

Antwort

4

Nachdem Sie die Zeilen in lesen, gibt es keine '\ n' Zeichen in der Zeichenfolge. Also, was Sie tun müssen, ist diese Linien durch Raum zu verbinden. Nur String.join() verwenden

In Java 8, alles, was Sie brauchen, ist:

File f = new File("your file path"); 
List<String> lines = Files.readAllLines(file.toPath()); 
String result = String.join(" ", lines); 

UPDATE

Als Shire unten im Kommentar darauf hingewiesen, wenn die Datei von der enormen Größe ist, ist es besser, Verwenden Sie einen gepufferten Leser, um jede Zeile zu lesen und sie mit einem Leerzeichen zu verketten.

Hier ist, wie ein verwenden BufferredReader

File file = new File("file_path"); 
StringBuilder sb = new StringBuilder(); 

try (BufferedReader reader = new BufferedReader(new FileReader(file))) { 
    String line; 

    while ((line = reader.readLine()) != null) { 
     sb.append(line).append(" "); 
    } 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
} 
String result = sb.toString(); 
+0

Wenn die Datei zu viele Zeilen enthält, ist es besser, einen BufferedReader zu verwenden, um eine Zeile nach der anderen zu lesen und die Zeichenfolge in einem StringBuilder zu erstellen, der nach jeder Zeile mit Ausnahme der letzten ein Leerzeichen anfügt. –

+0

@ShireResident ja, ich stimme zu. Ich werde das in die Antwort aufnehmen. Vielen Dank. –

Verwandte Themen