2017-05-19 2 views
0

Das untenstehende Programm ist von mir erledigt. Wenn Daten als Eingabe eingegeben wurden, werden sie in der Anzeige auf der Konsole gespeichert und schreiben Daten in eine Textdatei. Bitte geben Sie eine Lösung in Textdatei. Es werden Müllwerte gedruckt. Ich möchte, dass die Ausgabe so gedruckt wird, wie sie in der Konsole aussieht.schreiben konsolen Datenausgabe in eine Textdatei

public class Test { 
    public static void main(String []args) throws Exception { 
     Set storeVals = new HashSet(); 
     Scanner sc = new Scanner(System.in); 
     String input = ""; 

     do{ 
      System.out.println("Enter Some Data: "); 
      input = sc.nextLine(); 
      storeVals.add(input); 
     } while(!input.equals("exit")); 
     //sc.close(); 

     Iterator storeValsItr = storeVals.iterator(); 
     while (storeValsItr.hasNext()) { 
      System.out.println(storeValsItr.next()); 
     } 

     ObjectOutputStream wr= new ObjectOutputStream(new FileOutputStream("D:/new.txt")); 
     while (storeValsItr.hasNext()) { 
      Object o=storeValsItr.next(); 
      wr.writeObject(o); 
      wr.flush(); 
      wr.close(); 
     } 
    } 
} 
+0

Object schreibt Binärdateien. Wenn Sie eine Testdatei wollen, verwenden Sie einen BufferedOutputStream oder einen FileWriter – Jens

+0

es gibt einen Fehler bei der Verwendung von BufferedOutputStream –

+0

Und die Nachricht ist? – Jens

Antwort

0

Wie der JavaDoc:

Outputstream zum Schreiben Ströme unaufbereiteter Bytes wie Bilddaten gemeint. Denken Sie beim Schreiben von Zeichenströmen daran, FileWriter zu verwenden.

Verwenden Sie stattdessen FileWriter zusammen mit BufferedWriter.

0

Der Grund, warum Sie eine Datei mit Müll gefüllt bekommen, ist, weil Sie schreiben Object zu ihm, und nicht tatsächliche Zeichenfolgen, was zu einer Binärdatei. Um dieses Problem zu beheben, sollten Sie im unteren Bereich Ihres Programms stattdessen ein Objekt BufferedWriter verwenden.

BufferedWriter output = new BufferedWriter(new FileWrite(<yourfilename>)); 
while (storeValsItr.hasNext()) 
{ 
    output.write(storeValItr.next()+"\n"); 
} 
output.close(); 

BufferedWriter Dokumentation: https://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html

+0

es ist gut, aber in der Textdatei zeigt es leere Daten –

1
package com.krv; 

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Scanner; 
import java.util.Set; 

public class TextWriter { 

private static final String FILENAME = "D:/KRV/output/new.txt"; 

@SuppressWarnings("rawtypes") 
public static void main(String[] args) { 
    Set storeVals = new HashSet(); 
    Scanner sc = new Scanner(System.in); 
    String input = ""; 
    BufferedWriter bw = null; 
    FileWriter fw = null; 
    do { 
     System.out.println("Enter Some Data: "); 
     input = sc.nextLine(); 
     storeVals.add(input); 
    } while (!input.equals("exit")); 
    try { 
     fw = new FileWriter(FILENAME); 
     bw = new BufferedWriter(fw); 
     Iterator storeValsItr = storeVals.iterator(); 
     while (storeValsItr.hasNext()) { 

      bw.write((String) storeValsItr.next()); 
      bw.newLine(); 
     } 

     System.out.println("Done"); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } finally { 

     try { 

      if (bw != null) 
       bw.close(); 

      if (fw != null) 
       fw.close(); 

     } catch (IOException ex) { 

      ex.printStackTrace(); 

     } 

    } 

    } 
} 
+0

Fügen Sie nicht nur Code als Antwort hinzu. Beschreibe, was du getan hast und warum – Jens