2016-06-15 7 views
3

Hier in diesem Code einiger Operationen durchgeführt werden, mit der Verwendung einer Datei (new.txt) ich die Ausgabe von Code unten in einer anderen Datei speichert Ausgabe gespeichert werden soll ....eine Datei in einer anderen Datei mit Java

public static void main(String a[]) throws Exception { 
    try { 
     Arrays.stream(Files.lines(Paths.get("new.txt")).collect(Collectors.joining()) 
       .replaceAll("^.*?1002|1003(.(?!1002))*$", "\n") // trim leading/trailing non-data 
       .split("1003.*?1002")) // split on end-to-start-of-next 
       .forEach(System.out::println); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Antwort

2

Sie könnten versuchen, dass:

public static void main(String a[]) throws Exception 
{ 
    try { 
     PrintWriter os = new PrintWriter("output.txt"); 
     Arrays.stream(Files.lines(Paths.get("new.txt")).collect(Collectors.joining()) 
      .replaceAll("^.*?1002|1003(.(?!1002))*$", "\n") // trim leading/trailing non-data 
      .split("1003.*?1002"))      // split on end-to-start-of-next 
      .forEachOrdered(os::println); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 
+0

nicht funktioniert. Datei erstellt mit keine Daten –

0

Nein sicher, was genau suchen Sie. Hier ist eine Möglichkeit, es zu tun und was ich tun würde.
Sie können dies vom Terminal direkt tun

javac myFile.java 
java ClassName > myfile.txt 

dies Ihre Ausgabe in eine Datei ‚myfile.txt‘ speichern würde

+0

funktioniert nicht durch Terminal .. wenn Sie wissen, von Eclipse oder Netbeans PLZ sagen –

3

Wie Sie bereits den gesamten Inhalt der Datei im Speicher gehalten, eine Nicht-Strom-Lösung ist geradliniger.

String txt = new String(Files.readAllBytes(Paths.get("in.txt")), StandardCharsets.UTF_8); 
txt = txt.replaceAll(...); 
txt = txt.replaceAll(...); // split behavior 
Files.write(Paths.get("out.txt"), txt.getBytes(StandardCharsets.UTF_8)); 

Hinzugefügt: Obwohl die Logik mich entgeht, sollte der Ersatz wahrscheinlich sein:

finale String EOL = "\n"; 
txt = txt.replaceAll("^.*?1002|1003(.(?!1002))*$", EOL) // trim leading/trailing non-data 
txt = txt.replaceAll("1003.*?1002", EOL) // split on end-to-start-of-next 
+0

während der Aufspaltung Bedingung zeigt es Fehler –

+0

Hinzugefügt mein Verständnis von was sollte in der replaceAlls getan werden. Vielleicht sollte EOL "\ r \ n" sein, wenn für Windows. –

Verwandte Themen