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.
FileOutputStream fos = new FileOutputStream("canal"); // essa string aqui.
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this.file);
oos.close();
} // fim do método de serializacao
public void desserializaçao() throws IOException, ClassNotFoundException{
FileInputStream fis = new FileInputStream("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.
ObjectInputStream ois = new ObjectInputStream(fis);
this.file = (File) ois.readObject();
ois.close();
} // fim do método de desserializaçao[/code]
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.
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).
Um exemplo:
// objeto que será serializado
JFrame frame = new JFrame();
frame.add(new JLabel("Olá mundo!"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
// serialização
FileOutputStream fileOutputStream = new FileOutputStream("frame.dat");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
fileOutputStream);
objectOutputStream.writeObject(frame);
objectOutputStream.close();
// agora vamos zerar a referência da variável frame
frame = null;
// e fazer a desserialização para este mesmo objeto
FileInputStream fileInputStream = new FileInputStream("frame.dat");
ObjectInputStream objectInputStream = new ObjectInputStream(
fileInputStream);
frame = (JFrame) objectInputStream.readObject();
objectInputStream.close();
// para testar, vamos mostrar o JFrame que foi serializado e
// desserializado
frame.setVisible(true);
FileOutputStream fileOutputStream = new FileOutputStream("teste.ser"); // Ok ele crio um arquivo teste.ser
FileInputStream fileInputStream = new FileInputStream("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?