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

Короче говоря, если вы смешиваете двоичные файлы и текст, вы с большей вероятностью будете себя путать.