Ler e escrever em arquivo

O que estou fazendo de errado?
Estou precisando gerar números aleatórios, escrever-los em um arquivo.
Ler desse arquivo e mostrar.

Nesse meu código os arquivos gravados são diferentes dos lidos.
Outra coisa… porque quando vou lá abrir o arquivo criado, não vejo os números e sim… vários “caracteres estranhos”?

[code]import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class matrix
{
public static void main (String args[])
{
double vetor1[] = new double[10];
double vetor2[] = new double[10];
//Escreve arquivo 1///////////////////////////////////////////////////////
try
{
DataOutputStream out1 = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(“Arquivo.ste”)));
for (int cc=0;cc<vetor1.length;cc++)
{
vetor1[cc]= Math.random()*10;
out1.writeDouble(Math.random()*10);
}

		out1.close();
	} 
	catch (Exception e) 
	{	System.out.println("Erro de iO");
		e.printStackTrace();	}

///Le arquivo//////////////////////////////////////////////////////
try
{
DataInputStream in1 = new DataInputStream (
new BufferedInputStream(
new FileInputStream(“Arquivo.ste”)));
for (int cc=0;cc<vetor2.length;cc++)
{
vetor2[cc]= in1.read();
}
in1.close();
}
catch (Exception ex) {
System.out.println(“Erro de Io”);
ex.printStackTrace();
}
/////////////////////////////////////////////////////////////////////////
for (int cc=0;cc<vetor1.length;cc++)
{
System.out.print(vetor1[cc]+" “);
}
System.out.println();
for (int cc=0;cc<vetor2.length;cc++)
{
System.out.print(vetor2[cc]+” ");
}
}
}[/code]
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Cassolato[/color][/size] :joia:

Quando vc está lendo do arquivo, vc está usando read();
O método read lê um byte do arquivo e vc jah está colocando esse byte no vetor de double.
Só que o tamanho de um double eh BEM mais q 8 bytes. Eh por isso q tah dando pau.
O q vc escreveu (em binário) seria algo do tipo:
01001001 01011111 01100000 11111001 11001011 11001000 11000001…
Isso eh a representação de um double em binário.
Quando vc está lendo, vc está lendo apenas um byte desse double (por exemplo 01001001) e colocando isso no vetor. Só que esse byte não eh nada e na hora q vc imprimi, o Java está convertendo isso para String, e imprime quadradinhos pq o valor em Hexa desse byte, corresponde a um caracter qq.
Tenta substituir o read por readDouble() e vê se funfa…

Entendeu?
Se tiver dúvidas posta ae…

melhorou um pouco… hahahah
mas eu arrumei um outro jeito pra resolver o problema, acho q ficou bem melhor e mais profissional

muito obrigado

para gravar:

fw = new FileWriter(diretorio, true);

double valor = Math.random()*10;
String txt = ""+valor + "\n";
fw.write(txt);
fw.close();

Para ler:

File file = new File(diretorio + NOME_ARQUIVO);
// Se arquivo nao existe informa tratador
if (!file.exists()) {
CSIDebug
.println("##TratadorMensagemConsultaParamConveniadas :: trataMensagem --> Não existe arquivo.");
respConsParamConv.setStatus(RespostaConsultaParamConveniadas.ARQUIVO_INEXISTENTE);
return respConsParamConv;
}
// Abre arquivo para tratamento
FileReader fr = null;
BufferedReader br = null;
fr = new FileReader(file);
br = new BufferedReader(fr);
while (br.ready()){
// Le linha do arquivo
String linha = br.readLine();

                    System.out.print(linha+"\n"); 
            }
             fr.close();
             br.close();