Preciso de um modo para salvar os arquivos gerados pelo meu programa, eles deverão estar em um formato .SCALA, cada arquivo deverá conter uma série de informações incluindo caminhos de arquivos que serão usados pelo arquivo montado (endereços de figuras em determinadas pastas do projeto deverão constar no arquivo salvo).
Gostaria de saber se eu salvo essas informações em um arquivo texto ou se existe alguma forma mais simples de fazer o que eu quero?
Se puder, alguma função pronta para eu usar de base seria ótimo (:
O que é o programa (para quem quiser ler): trata-se de classes jogadas em um JPanel que formam uma sequência de fotos, essas fotos estão armazenadas no projeto, há também diversos layouts que deverão ser gravados também, então eu preciso carregar primeiro o layout, montar o layout no JPanel e depois ir adicionando as figuras (que já estão dentro do projeto).
Olha cara não sei se entendi bem o teu problema, tu queria apresentar vairas fotos no JPanel ?, tu pode sim criar um arquivo.SCALA usando Serializable, tenho um exemplo aqui como mais ou menos tu faria
private void gravaObjeto (File f, Object o){
try {
FileOutputStream fos = new FileOutputStream (f);
ObjectOutputStream os = new ObjectOutputStream (fos);
os.writeObject (o);
os.close ();
}catch (IOException e) {
System.out.println ("Erro ao gravar objeto.");
}
}
Seria mais generico por receber qualquer objeto, as informações não apareceriam, eles ficariam dentro do objeto salvo, e tu só poderia ter acesso a elas por codigo dentro do teu programa.
tiagokos
Exemplificando bem o que eu quero.
Preciso salvar registros em um arquivo, nesta lógica.
…
Por exemplo em um arquivo texto poderia ser da seguinte forma.
1#gato#cachorro#galinha@
Se eu saber como salvar/abrir um arquivo com esta lógica (o número é o tipo de layout, os #'s separadores de cartões e o @ um finalizador) já tenho meio caminho andado.
Obrigado!
Allan_Barcelos
Não tinha lido que tu queria criar um tambem :oops: , olha cara:
cria um objeto Links adiciona teus links e depois salva o objeto com o metodo gravaObjeto, cria um FIle com o endereco dai fica gravaObjeto(file,Links);
não pude testar os códigos mais acho que pode ser mais ou menos essa ideia :wink:
tiagokos
Entendi!
Isso realmente me soluciona alguns problemas, essa função cria uma lista de links certo? E depois ele grava esta lista em um arquivo certo?
Muito bem, mas preciso salvar também um valor de layout, que varia de 1 a 4. Tem como colocar ele em forma de string dentro desse objeto e depois na hora da leitura ler isto como uma string e transformar para inteiro? (O valor dessa layout seria a primeira string desse vetor, por definição)
marcio.froes
Cara eu usaria , Integer.parseInt(); … ja tentou ?
Allan_Barcelos
Pega o número do layou via parametro e passa ele como String pro método, e depois faz o Integer.parseInt(""); ou tu ainda pode verificar se a string que o método recebeu é um número ou não dai tu pode fazer algo assim
Pode usar isso nesse método só para verificar a string, não sei bem o que tu quer, mais isso ja me ajudou uma no trabalho da facul.
CintiaDR
Para pegar um objeto INTEIRO, salvar num arquivo todos os atributos não estáticos e não transientes, serialização pode ser uma boa pedida.
Porém, tem que tomar cuidado com superclasses não serializáveis ou associação com outras entidades (i.e, objetos que relacionam com objetos não serializáveis).
classCatimplementsSerializable{/*milhões de coisas serializáveis e não estáticas aqui*/}publicclassTesteSerializacao{publicstaticvoidmain(String[]args){Catc=newCat();//Serializandotry{FileOutputStreamfs=newFileOutputStream("nomeDoArquivo.ser");ObjectOutputStreamos=newObjectOutputStream(fs);os.writeObject(c);os.close();}catch(Exceptione){e.printStackTrace();}//Deserializandotry{FileInputStreamfis=newFileInputStream("nomeDoArquivo.ser");ObjectInputStreamfos=newObjectInputStream(fis);Catc2=(Cat)ois.readObject();ois.close();}catch(Exceptione){e.printStackTrace();}}}
Copiei esse código do livro da Kathy&Bert. Deve funcionar hehe
Tem algumas frescuras, tipo que na deserialização, não é chamado o construtor. Mas não sei se você precisa de tudo isso.
Seria minha primeira tentativa.
Allan_Barcelos
Olha cara sei lá, minha opinião, acho mais facil tu criar os métodos para salvar e carregar na classe que vai “fazer funcionar” o teu programa e não no método main.
tiagokos
Já resolvi meu problema, to conseguindo salvar e carregar meus arquivos, consegui transformar toda minha informação em objects, ta quase pronto!
Só tenho mais uma dúvida, eu peguei minha lista de strings, transformei para um object, e agora? Como transformo um Object lido em uma lista de strings?
Um: links = (ArrayList) info; resolve?
Obrigado!
Allan_Barcelos
Carrega por exemplo:
Links lk = (Links) this.leObjeto();
Vector <String> v = new Vector <String> (1,1);
v = lk.getVector();
for(int i = 0; i < v.size(); i++){
System.out.println(v.get(i));
}