2013-06-21 51 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(); 

簡而言之,如果您將二進制文本和文本混合在一起,那麼您更可能會讓自己感到困惑。

相關問題