Bom eu tenho os seguintes métodos de serialização e deserialização eu queria saber somente a questão da string para o construtor ou seja se essa string que cria um canal especifico para alocar (gravar) o objeto.
publicvoidserializacao()throwsIOException,ClassNotFoundException{FileOutputStreamfos=newFileOutputStream("canal");// essa string aqui.ObjectOutputStreamoos=newObjectOutputStream(fos);oos.writeObject(this.file);oos.close();}// fim do método de serializacaopublicvoiddesserializaçao()throwsIOException,ClassNotFoundException{FileInputStreamfis=newFileInputStream("canal");// por exemplo se eu tiver nome diferente aqui da string passada no FileOutputStream acontece algo? Pq fiz teste aqui com strings diferentes serializou do mesmo jeito.ObjectInputStreamois=newObjectInputStream(fis);this.file=(File)ois.readObject();ois.close();}// fim do método de desserializaçao
ta mas que arquivo é esse cara isso que eu quero entender, ele passa o nome de um arquivo para a variavel de referencia?
Diabo_Loiro
Quando voce serializa voce cria um arquivo por exemplo obj.bruno no padrão da serialização.
Foxlol
Everton, quando vc faz:
newFileOutputStream("canal");
Vc está está criando uma stream ed saída para gravar um arquivo com este nome, porém, este nome não é o arquivo, é o nome que vai ser gravado o arquivo.
O arquivo que vc vai gravar através deste stream é o this.file.
oos.writeObject(this.file);
FKw
L
lbvitoriano
Olá Everton, bom dia…
Talvez uma lida nesse blog possa ajuda a esclarecer melhor…
O parâmetro passado para o FileOutputStream é o nome do arquivo (um arquivo mesmo, presente no sistema de arquivos; por exemplo c:/arquivo.dat ou /home/fulano/arquivo.dat).
Depois, para método writeObject() você vai informar qual objeto você irá serializar (por exemplo, um JFrame).
FileOutputStreamfileOutputStream=newFileOutputStream("teste.ser");// Ok ele crio um arquivo teste.ser
FileInputStreamfileInputStream=newFileInputStream("teste2.ser");// Aqui com nome diferente, como o objeto foi salvo no arquivo teste, ele vai tentar deserializa um objeto em um arquivo diferente e ira me gerar um ClassNotFoundExcpetion correto?
Pelo que eu entendi então ele grava o estado do objeto no arquivo correto? Agora quanto a extensao do arquivo pode ser qualqur uma ou ate mesmo nao ter extensao?
M
marcobiscaro2112
A extensão pode ser qualquer uma: .ser, .dat, .seilaoque
Porém na hora de de desserializar, você deve usar o mesmo nome e extensão que usou na hora de serializar.
evertonsilvagomesjav
marco brigadao cara, mas entao e isso mesmo ele grava o estado do objeto no arquivo né, muito obrigado pela ajuda.
bestlinux
Não grava só o estado, mas sim o objeto inteiro, com todos os seus dados e propriedades.