2013-06-21 3 views
0

문제의 모든 것이 제목에 있습니다.내 이름 뒤에 왜이 DataOutputStream 인쇄 횡설수설합니까?

출력에 "내 이름"다음에 횡설수설이 많이 있습니다.

import java.io.*; 

public class DOStry { 

public static void main(String[] args) { 

    String file = "file.txt"; 
    String stra = "my name"; 
    int intb = 1; 
    double douc = 2.5; 
    char chad = 'f'; 

    try 
    { 

     FileOutputStream fos = new FileOutputStream(file); 
     DataOutputStream dos = new DataOutputStream(fos); 

     dos.writeUTF(stra); 
     //i don't know why it prints gibberish after my name. 
     dos.writeInt(intb); 
     dos.writeDouble(douc); 
     dos.writeChar(chad); 

     dos.flush(); 
     dos.close(); 

     } 
    catch (IOException e) 
    { 
     System.out.println("IOException : " + e); 
    } 

    } 
} 

내가 뭘 잘못 했니? 나는 단지 DataOutputStream을 배우려고하고있다.

+0

* "나는 무엇을 놓쳤는가?"* - DataOutputString이 텍스트가 아닌 바이너리 데이터를 쓰는 것이 분명한 사실 !! –

답변

3

DataOutputStream은 텍스트가 아닌 바이너리를 인쇄하기위한 것으로, 이진 파일로 읽어야 의미를 알 수 있습니다. 텍스트의 일부분을 읽을 수 있다는 사실이 그런 의미는 아닙니다.

다음을 수행하는 것이 좋습니다. 이것들은 모두 텍스트로 읽을 수 있습니다.

FileWriter fw = new FileWriter(file); 
PrintWriter pw = new PrintWriter(fw); 

pw.println(stra); 
pw.println(intb); 
pw.println(douc); 
pw.println(chad); 

dos.close(); 

요약하면 바이너리와 텍스트를 혼합하면 자신을 혼란에 빠뜨리기 쉽습니다.