2016-05-02 18 views
1

Unten ist mein Code, der in einer Datei liest, und dann seinen Inhalt in eine neue Datei schreibt. Was ich tun muss, ist Text zwischen jeder Textzeile aus der alten Datei einzufügen und diese in die neue Datei einzufügen. In diesem Code wird die Datei als Ganzes gelesen, also wie ändere ich sie, um Zeile für Zeile durchzugehen und Text zwischen beiden hinzuzufügen?Wie kann ich Text vor und nach jeder Zeile einer Textdatei einfügen?

import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.nio.file.StandardOpenOption; 
import java.util.List; 

public class Webpage { 
    public static String readTextFile(String fileName) throws IOException { 
    String content = new String(Files.readAllBytes(Paths.get(fileName))); 
    return content; 
    } 

    public static List<String> readTextFileByLines(String fileName)throws IOException { 
    List<String> lines = Files.readAllLines(Paths.get(fileName)); 
    return lines; 
    } 

    public static void writeToTextFile(String fileName, String content)throws IOException { 
    Files.write(Paths.get(fileName), content.getBytes(), StandardOpenOption.CREATE); 
    } 

} 
+0

Konzeptionell müssen Sie in eine temporäre Datei schreiben, sobald Sie die Datei gelesen haben, entfernen Sie sie und benennen Sie die Temp in ihren Platz – MadProgrammer

+0

Sie haben die Zeilen gelesen, durchlaufen jetzt die Liste und schreiben sie eins nach dem anderen. Fragen Sie, wie man durch eine Liste iteriert? Wie schreibe ich in mehreren Schritten? diese –

Antwort

0

Ich denke, Ihre readTextFileByLines wird tun, was Sie wollen. Sie können die Liste durchlaufen und vor und nach jeder Zeile schreiben, was Sie wollen.

Wenn Sie die readTextFile-Methode verwenden müssen, können Sie split ("\ n") verwenden, um die einzelne große Zeichenfolge (die gesamte Datei) in ein Array von Zeichenfolgen umzuwandeln, eins pro Zeile.

Hmm ... die doc für Split (ein Argument) sagt, dass hintere leere Strings werden im Ergebnis nicht enthalten sein. Wenn Ihre Eingabedatei am Ende leere Zeilen enthalten sollte, sollten Sie die beiden Argumente mit einem sehr großen zweiten Argument teilen: split ("\ n", Long.MAX_VALUE);

0
  1. Lesen Sie die Textdatei Zeile für Zeile und fügen Sie neue Zeilen hinzu, wo Sie möchten.
  2. Setzen der gelesenen Werte mit neuen Zeilen in einer Zeichenfolge pro Zeile durch \ n getrennt.
  3. schreiben in neue Textdatei.
0

Wenn das, was Sie versuchen, jede Zeile mit der gleichen Zeichenfolge zu tun ist, neu schreiben, vor und nach jeder Zeit, als Sie diesen Code verwenden können:

public static void main(String[] args) throws IOException { 
    addLines("/Users/Hamish/Desktop/file1.txt", "/Users/Hamish/Desktop/file2.txt"); 
} 

public static void addLines(String fileName, String secondFile) throws IOException { 
    File file = new File(fileName); 
    FileReader fr = new FileReader(file); 
    BufferedReader br = new BufferedReader(fr); 
    String line = null; 
    PrintWriter writer = new PrintWriter(secondFile, "UTF-8"); 
    while ((line = br.readLine()) != null) { 
     writer.println("Random line before"); 
     writer.println(line); 
     writer.println("Random line after"); 
    } 
    br.close(); 
    writer.close(); 
} 

effektiv liest sie die txt Datei Zeile Zeile und vor und nach jeder Zeile wird etwas gedruckt, das Sie angeben.

Wenn Sie am Ende wollen, können Sie auch schreiben:

die erste Datei zu entfernen.

Wenn was Sie vor und nach jeder Zeile schreiben möchten, ist spezifisch als leider kann ich Ihnen nicht helfen.

+0

ist hilfreich, und ich brauche es nicht, dass spezifisch. Ich muss nur vor und nach jedem Satz dasselbe schreiben und vor und nach jedem Großbuchstaben in der Textdatei etwas anderes. –