Duvida Serialização de Objetos - Legivel

8 respostas
S

Duvida Serialização de Objetos

Tenho que serializar alguns objetos, quantidade variavel.
Até ai eu consegui, mas o problema é que o arquivo *.txt não fica legivel…

Este é o código, um pouco modificado pra ficar mais facil de intender:

import java.io.*;


public class UsaArea{

    public static void main(String a[]) throws IOException {
        
        UsaArea  usaArea= new UsaArea();
        usaArea.exec();
    }
    
    
    private void exec() throws IOException{
        
	
        Area area = new Area(5);

        FileOutputStream arq = new FileOutputStream("arq.txt");
        ObjectOutputStream objeto = new ObjectOutputStream(arq);

            
        objeto.writeObject(area4);

        
        objeto.flush();
        objeto.close();
        arq.close();
        
    }

}

O problema é que ele gera um arquivo com esse conteudo:

¬í sr Area ??µ?.2 L areat Ljava/lang/Double;L raioq ~ xpsr java.lang.Double?³ÂJ)kû D valuexr java.lang.Number?¬??à? xp@S¢?C??sq ~ @ sq ~ sq ~ @c>[Õìsq ~ @ sq ~ sq ~ @<F9.÷<sq ~ @

Alguem sabe uma maneira de fazer com que a saida fique legivel?

algo como : area raio diametro

Pois terei que ler este arquivo em outra parte do programa, mas quero poder modificar os valores contidos no arquivo.

8 Respostas

Ataxexe

Na documentação da classe Serizalizable tem algo que pode te ajudar:

Classes that require special handling during the serialization and deserialization process must implement special methods with these exact signatures:

private void writeObject(java.io.ObjectOutputStream out)

throws IOException

private void readObject(java.io.ObjectInputStream in)

throws IOException, ClassNotFoundException;</blockquote>

Com isso você pode “escrever” o seu arquivo da maneira como você quer.

S

O que eu quero fazer é o seguinte, por exemplo:

Crio um objeto Cubo.
Passo o valor do Lado do Cubo.
O objeto cubo vai ter intao, lado e volume.

vou criar N cubos, e dps salvar em um txt essas informaçoes.

no txt tem que ficar algo legivel por exemplo:

Cubo1 1m 1m³
Cubo2 2m 8m³

para que eu possa modificar os valores pelo proprio txt em vez de fazer um outra coisa para ler/modificar/salvar

E depois em outra parte do programa preciso recuperar os dados desses objetos.

J2Alex

Você quer editar o arquivo na mão? Poderia explicar o motivo disso?

S

Pq o arquivo tbm podera ser gerado pelo fortran…
nesse exemplo que eu passei é uma forma simplificada do que eu tenho que fazer…

na verdade serão coordenadas para exibir objetos em 3d com o java 3d… esta parte jah esta implementada… o problema esta em salvar essas coordenadas… e ler em outra parte do programa.

e na verdade serão cubos, esferas, e cilindros…

eita vc é do ITA… trabalho do lado… no INPE.

J2Alex

Me parece que serializar talvez não seja a melhor opção então. Que tal trabalhar com algum tipo de xml ou mesmo um arquivo properties, depende um pouco da sua necessidade… mas acredito que seriam melhores opções.

Eu trabalho no ITA… de vez em quando vamos almoçar no INPE… rs.

T

http://java.sys-con.com/read/37550.htm

S

o problema de serializar em xml é que eu nao sei se da pra gerar um arquivo xml no fortran tbm…

J2Alex dps passa seu e-mail… so trabalho na parte da tardee…eheh

T

sliverfrf:
o problema de serializar em xml é que eu nao sei se da pra gerar um arquivo xml no fortran tbm…

J2Alex dps passa seu e-mail… so trabalho na parte da tardee…eheh

É claro que dá, porque é um arquivo texto como os outros - só se você estiver usando Fortran de mainframe e algum sistema operacional antigo de mainframe onde o tamanho máximo de uma linha é 80 caracteres :stuck_out_tongue:

Criado 7 de novembro de 2007
Ultima resposta 13 de nov. de 2007
Respostas 8
Participantes 4