Folgendes ist eine "Lambda-Version" des erforderlichen Codes. Danke an @Sam für den wichtigen Punkt über das erneute Anhängen von unterdrückten PrintWriter IOException.
Wenn Sie die Datei an Ort und Stelle ändern müssen, ist das Schreiben etwas schwieriger. Sie könnten alles zuerst in den Speicher einlesen.
Path path = new Path("filename");
List<String> lines = Files.lines(path)
.filter(line -> !line.equalsIgnoreCase("cfg"))
.collect(Collectors.toList());
try(PrintWriter pw = new PrintWriter(path.toFile())) {
lines.forEach(pw::println);
if (pw.checkError()) {
throw new IOException("Exception(s) occurred in PrintWriter");
}
}
Und schließlich, nur für den Fall, eine nicht-Lambda-Lösung für die Kompatibilität mit Java 7:
Path in_file = Paths.get("infile");
Path out_file = Paths.get("outfile");
try (BufferReader reader = Files.newBufferedReader(in_file);
PrintWriter pw = new PrintWriter(out_file.toFile())) {
String line;
while((line = reader.readline()) != null) {
if (!line.equalsIgnoreCase("cfg")) {
pw.println(line);
}
}
if (pw.checkError()) {
throw new IOException("Exception(s) occurred in PrintWriter");
}
}
Sie könnte so etwas wie Groß die Zeichenfolge tun und in den Satz einfügen. – user1875195
'String.equalsIgnoreCase (String str)' – robotlos
Wenn Sie dann ausdrucken, haben Sie alle ursprünglichen Fälle verloren, was ich nicht brauche. – user697911