2016-11-27 6 views
0

Bitte beachten Sie, das ist eine Hausaufgabe.anhängen Text an den Anfang jeder Zeile in einer Datei

Kann jemand mir helfen, herauszufinden, wie der Text zu Beginn jeder Zeile einer Textdatei anhängen? Das ist, was ich habe, so weit:

package addStr; 
import java.util.*; 
import java.io.*; 

public class AddStr { 
    public static void main(String args[]) throws FileNotFoundException, IOException{ 
     Scanner con = new Scanner(System.in); 

     System.out.print("Enter input file: "); 
      String fileIn = con.next(); 
     System.out.print("Enter output file: "); 
      String fileOut = con.next(); 

     File in = new File(fileIn); 
     Scanner sc = new Scanner(in); 
     FileWriter out = new FileWriter(in, true); 
     PrintWriter print = new PrintWriter(out); 


     print.print("hello"); 


     print.close(); 
    } 

} 

ich nur als Test „Hallo“ gedruckt zu sehen, wo in der Datei würde es anhängen. Es hängt am Ende der allerletzten Zeile. Ich muss es an den Anfang der ersten Zeile anhängen und dann eine Schleife verwenden, um es an den Anfang jeder nachfolgenden Zeile anzuhängen.

Auch fordert das Programm den Benutzer zur Eingabe der Dateinamen.

+0

Also Ihr Ausgang wird newText + restOfFile? –

+0

Ich muss den Text an den Anfang jeder Zeile in der Datei anhängen. – derek00101110

+0

Sie können nicht gleichzeitig lesen und in dieselbe Datei schreiben. Die einzige Möglichkeit besteht darin, in eine temporäre Datei zu schreiben. Wenn Sie fertig sind, benennen Sie die alte Datei um, benennen Sie die neue Datei um und löschen Sie die alte Datei. Oder lesen Sie von stdin und schreiben Sie in stdout und lassen Sie den Benutzer die Umleitung in der Befehlszeile angeben. –

Antwort

1

Der einfachste Weg, um den Inhalt einer Datei zu ändern, ist es zum Lesen zu öffnen, sie in eine Struktur lesen, wieder öffnen Sie die Datei für das Schreiben dann von der Struktur schreiben zurück zur Datei. Wenn die Datei nicht groß ist, ist die Leistung vollkommen akzeptabel.

Wenn Sie mit Java 8 dann kann dies ganz trivial sein. Vorausgesetzt, dass Sie eine Path auf die Datei haben:

List<String> lines = Files.lines(path).map(s -> "Prefix" + s).collect(Collectors.toList()); 
Files.write(path, lines); 
Verwandte Themen