[RESOLVIDO] Ajuda para escrever Strings [RESOLVIDO]

8 respostas
oddy.silva

Gostaria de saber como poderia escrever String para um objeto.
Estou trabalhando num projeto, e até agora eu sempre escrevi
as Strings em arquivos, conforme o exmplo abaixo:

OutputStreamWriter osw = new FileWriter("/home/dir/arquivo");
         osw.write("Escrever este conteudo");
         
         osw.close();
Pois bem, preciso escrever este conteudo em objeto, ou alguma coisa
     que tenha a ver com a classe OutputStream, e não num arquivo de texto.
     Alguém tem idéia de como eu posso fazer isso? Abraço.

8 Respostas

T

Você pode usar um DataOutputStream (método writeUTF) ou um ObjectOutputStream (método writeObject).
Depende do que você quer escrever, e qual o formato desejado.
Pode ser até que você tenha de converter a string para um byte[] e usar RandomAccessFile.

oddy.silva

thingol, você pode dar um exemplo do DataOutputStream?

abraço.

abelgomes

PrintWriter

da uma googlada…ou procura aqui no forum mesmo :wink:

http://www.guj.com.br/posts/list/71520.java

T
DataOutputStream dos = new DataOutputStream (new FileOutputStream ("teste.bin"));
dos.writeUTF ("Hello, world!");
dos.close();
...
DataInputStream dis = new DataInputStream (new FileInputStream ("teste.bin"));
String s = dis.readUTF ();
dis.close();
System.out.println (s);
fmad27

Segue um exemplo de ObjectOutputStream. é uma boa forma para gravar os objetos em seu estado atual.

Cliente obj = new Cliente();
obj.setNome("Nome do Cliente");

//FileOutputStream para gravar o arquivo
FileOutputStream fileOut = null;
ObjectOutputStream objStream = null;
try {
    //Cria o arquivo
    fileOut = new FileOutputStream( "nome do arquivo" );
    objStream = new ObjectOutputStream(fileOut);

    //Grava o objeto
    objStream.writeObject(obj);
		
    //Fecha o arquivo
    objStream.flush();
    objStream.close();
    fileOut.flush();
    fileOut.close();
}catch (FileNotFoundException e) {
    System.out.println("Arquivo não encontrado!");
    System.exit(0);
} catch (IOException e) {
    System.out.println("Problemas na gravação do objeto!");
    System.exit(0);
}
System.out.println("Objeto Gravado com sucesso!");

Lembrando que classe cliente deve implementar a interface Serializable.

oddy.silva

tnhingol, no seu exemplo eu ainda continuo a gerar um arquivo. Eu gostaria mesmo é de guardar as informacoes da String em um outro lugar, que não seja um arquivo gerando no hd, e nem em uma string buffer.
Eu gostaria, por exemplo, de escrever essa string num arquivo que ficasse na memória volátil, e não em uma memória secundária(HD);

por exemplo, sei que não existe, mas podeira ser:

FileWriter fw = new FileWriter(File(posicaoDaMemoriaTal).
fw.write(MeuConteudoNaMemoria);  //Armazena o conteúdo temporariamente

fw.close();

Não sei se deu pra entender, mas é basicamente isso o que preciso. Desde já agradeço a ajudad e todos até aqui. Quem tiver alguma dica, agradeço!

T

Ah, quem não se explica direito não tem a resposta certa. Use um ByteArrayOutputStream / ByteArrayOutputStream:

ByteArrayOutputStream baos = new ByteArrayOutputStream ();
 DataOutputStream dos = new DataOutputStream (baos);  
 dos.writeUTF ("Hello, world!");  
 dos.close();  
 byte[] bytes = baos.toByteArray();
...  
 ByteArrayInputStream bais = new ByteArrayInputStream (bytes);
 DataInputStream dis = new DataInputStream (bais);  
 String s = dis.readUTF ();  
 dis.close();  
 System.out.println (s);
oddy.silva

Aew!!!
ByteArray deu certo!!!
rsrsrsrs

Valeu, brigadão gente!

Criado 7 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 8
Participantes 4