2016-04-13 29 views
0

Ich habe eine Textdatei mit einigen Daten, ich möchte die Datei zeilenweise lesen, dann finden und ersetzen.Suchen und Ersetzen in Textdatei

In der Textdatei i „_x“ und ersetzen Sie sie finden will damit zweite vorherige Zeile ist, die wie folgt

ich mag die endgültige Ausgabedatei bedeutet
input 

a 
a=10 
c=_x 
b 
b=20 
d=_x 


Output 

a 
a=10 
c=a 
b 
b=20 
d=b 

Ich habe versucht, die Datei zu lesende Zeile durch Linie, aber ich konnte nicht. Wie lese ich eine Textdatei Zeile für Zeile und ersetze das Wort durch die zweite vorherige Zeile ????

+0

[Hier ist ein Beispiel, wie man die Zeilen einer Datei liest und sie in eine Liste einfügt.] (Http://Stackoverflow.com/a/5343727/1682559) Ich würde das zuerst in Ihr bestehendes implementieren Code, dann versuchen Sie einige Dinge für das Ersetzen der "_x" mit der vorherigen Zeile l Ike du willst. Wenn Sie irgendwelche Probleme haben, dann können Sie diesen Beitrag mit dem ** _ spezifischen _ ** Problem bearbeiten, das Sie haben, einschließlich des Codes, den Sie gemacht haben. Viel Glück. :) –

Antwort

0

Um Ihren Text-Datei Zeile für Zeile, die Sie benötigen, um ein Konstrukt wie folgt zu lesen:

Charset charset = Charset.forName("US-ASCII"); 
try (BufferedReader reader = Files.newBufferedReader(file, charset)) { 
String line = null; 
while ((line = reader.readLine()) != null) { 
    System.out.println(line); 
} 
} catch (IOException x) { 
    System.err.format("IOException: %s%n", x); 
} 

Wenn Ihr Ersatz-Sachen gemacht, möchten Sie die „neue“ wie diese Datei schreiben:

Charset charset = Charset.forName("US-ASCII"); 
String s = ...; 
try (BufferedWriter writer = Files.newBufferedWriter(file, charset)) { 
    writer.write(s, 0, s.length()); 
} catch (IOException x) { 
    System.err.format("IOException: %s%n", x); 
} 
0
Path path = Paths.get("test.txt"); 
Charset charset = StandardCharsets.UTF_8; 

String content = new String(Files.readAllBytes(path), charset); 
content = content.replaceAll("_", ""); 
Files.write(path, content.getBytes(charset));