Gravar TreeMap num arquivo[resolvido]

4 respostas
J

Fala Pessoal,

Estou precisando gravar o contéudo de um TreeMap num arquivo antes de encerrar um programa, e depois quando o programa for reaberto ele precisa recarregar o TreeMap com o conteúdo do arquivo,
como posso fazer isso?, agradeceria ajuda,

Abraços,
jhonata

P.s - acho que pode ter parecido que não sei desde do começo e preciso de ajuda desde do início, o programa ta todo protinho, só não estou conseguindo fazer esse final de gravar no arquivo

4 Respostas

Petronio_Braga

Jhonjhon,

segue abaixo um pequeno exemplo de como gravar e ler um objeto TreeMap.

public void salvar(Map<Integer, String> map) {
		try {
			FileOutputStream fileOutput = new FileOutputStream("nomedoarquivo.dat");
			ObjectOutputStream objectOutput = new ObjectOutputStream(
					new BufferedOutputStream(fileOutput));
			objectOutput.writeObject(map);
			objectOutput.close();
		} catch (Exception e) {
			System.out.println(e.toString());
		}
}
	
public Map<Integer, String> ler(String arquivo) {

		Map<Integer, String> map = null;

		try {
			FileInputStream fileInput = new FileInputStream(arquivo);
			ObjectInputStream objectInput = new ObjectInputStream(
					new BufferedInputStream(fileInput));
			map = (Map<Integer, String>) objectInput.readObject();
			objectInput.close();
		} catch (Exception e) {
			System.out.println(e.toString());
		}

		return map;
}

Vale salientar que para poder salvar qualquer objeto, esse objeto tem que ser serializável, ou seja, ele implementa a interface Serializable.

J

Estou tentando implementar sua sugestão, na parte que escreve no arquivo foi certinho,
mas na hora de ler ele está reclamando disso aqui oh:

incompatible Types
map=<Map<String, Base>> objectInput.readObject();

e outro erro é:
Indice.java uses unchecked or unsafe operations

Só para te falar, Base é uma classe, onde implemento meus construtores e os métodos set e get e essa classe Base ela implementa a interface Serializable.
Então a parte da minha leitura estou fazendo assim:

TreeMap<String, Base> Map = null;
 
       try
       {
 	      
 	  FileInputStream fileInput = new FileInputStream("Indice.txt");
  	  ObjectInputStream objectInput = new ObjectInputStream(
  					new BufferedInputStream(fileInput));
  	   map = (Map<String, Base>) objectInput.readObject();
  	  objectInput.close();
 	      
       }
       catch( IOException ioException )
       {
 	      System.err.println("Erro ao Abrir ao arquivo");
       }

Alguém saberia dar uma força?
Abraços

Petronio_Braga

Coloca assim.

@SuppressWarnings("unchecked")
public TreeMap<Integer, String> lerArquivo(String arquivo) {

		TreeMap<Integer, String> map = null;

		try {
			FileInputStream fileInput = new FileInputStream(arquivo);
			ObjectInputStream objectInput = new ObjectInputStream(
					new BufferedInputStream(fileInput));
			map = (TreeMap<Integer, String>) objectInput.readObject();
			objectInput.close();
		} catch (Exception e) {
			System.out.println(e.toString());
		}

		return map;
}
J

Cara funcionou certinho,
valeu mesmo

essa sacada:

@SuppressWarnings("unchecked")

não conhecia,
abraços e obrigado novamente,

Jhonata

Criado 7 de junho de 2007
Ultima resposta 8 de jun. de 2007
Respostas 4
Participantes 2