2017-05-19 3 views
0

아래 프로그램은 저만 수행합니다. 데이터가 입력으로 주어지면 콘솔의 설정 디스플레이에 저장되고 데이터가 텍스트 파일에 기록됩니다. 텍스트 파일에 몇 가지 해결책을주십시오. 쓰레기 값을 인쇄하고 있습니다. 나는 출력물을 콘솔에서 볼 때 출력하고 싶다. JavaDoc의 현재로콘솔 데이터 출력을 텍스트 파일로 작성

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

ObjectOutputStream에 바이너리 파일을 작성합니다. 테스트 파일을 원하면 BufferedOutputStream 또는 FileWriter – Jens

+0

을 사용하십시오. BufferedOutputStream을 사용할 때 오류가 발생합니다 –

+0

그리고 메시지는? – Jens

답변

0

:

의 FileOutputStream는, 이미지 데이터 등의 생 바이트 스트림을 기입 의미한다. 문자 스트림을 작성하려면 FileWriter를 사용해보십시오.

FileWriter과 함께 BufferedWriter을 사용하십시오.

0

파일을 쓰레기로 가득 채우는 이유는 실제 문자열이 아닌 Object을 작성하여 이진 파일을 작성하기 때문입니다. 이 문제를 해결하려면 프로그램 하단에서 BufferedWriter 개체를 대신 사용해보십시오.

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

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

+0

좋지만 텍스트 파일에 빈 데이터가 표시됩니다 –

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

답변으로 만 코드를 추가하지 마십시오. 당신이 한 일과 그 이유를 설명하십시오. – Jens

관련 문제