Pequena duvida sobre Stream

Com o seguinte codigo realizo a gravação de diferentes tipos de dados em um arquivo texto

 /*Gravando diferentes tipos de dados em um arquivo usando DataOutputStream/
    public static void main(String[] args) {
        
        try{
            FileOutputStream out = new FileOutputStream("saida.txt");
            DataOutputStream datOut = new DataOutputStream(out);
            double[] reais = {2.99, 5.89, 65.5};
            int[] inteiros = {2,0,9};
            String[] cadeiaChar = {"kassiane", "Angela", "Maria"};
            
            for(int i = 0; i<reais.length; i++)
            {
                datOut.writeDouble(reais[i]);
                datOut.writeInt(inteiros[i]);
                datOut.writeChars(cadeiaChar[i]);
            }
            datOut.close();
        }
        catch (IOException e) { System.out.println(e); }
    }

Ele faz tudo direitinho, mas quando abro o arquivo está cheio de caracteres especiais. Pq eu não consigo ver exatamente o q eu gravei no arquivo?

Desde já agradeço a atenção

Vlw \o/

Perdão, mas não se deve usar DataOutputStream para escrever em um arquivo-texto.
Por exemplo, se você usar writeDouble, serão escritos sempre 8 bytes, que são a representação binária de um double (mantissa, expoente e sinais), não alguma coisa que você pode ler (ou seja, algarimos decimais e ponto).
Para gravar do jeito que você quer, use PrintWriter, e os métodos println ou printf (dependendo de como você quer formatar os dados).

Pq vc está criando um arquivo binário, não texto.

No lugar do DataOutputStream use um PrintWriter. E então, use os métodos de println e prinf tal como vc usaria no System.out.

Isso gerará um arquivo texto.

Humm…

Valeu msm.
Eu fiquei na duvida, pois todos os exemplos feitos em sala de aula foram feitos com arquivos texto, mas a gente nunca pegou um codigo para executar e ver a saida dele durante a aula. Ai já viu né, quando pega para estudar vem as duvidas.

Vlw \o/