Galera, tenho um programa básico que le dados de itens de estoque, como nome, descrição, nivel do estoque, nivel minimo e preço. Todos esses atributos estou na classe ItensEstoque, no qual contem os metodos get´s e set´s. Depois que um objeto é criado, jogo ele para o Array de objetos. O que eu quero fazer é jogar esse dados em um arquivos, por exemplo:
Codigo: 0
Nome : nome0
Descrição: descricao0
Estoque: 000
Estoque minimo: 0
Preço: 000
Todo bean que você quiser gravar deve implementar a classe Serializable. Ou seja a sua Classe ItemsPedido deve ficar parecida com alguma coisa do tipo:
Caros Colegas, tenho um problema. Como posso ter uma classe chamada LerCpfCgc, esta classe irá abrir um arquivo texto que contém CPF e Cgc Válidos e Inválidos. Ter outra classe chamada Utilitarios, esta classa por sua vez irá identificar se é cpf ou cgc e se esses são válidos ou inválidos e depois gravar os válidos em um arquivo de arquivos válidos e os inválidos. Todos os métodos são estáticos e estão prAaticamente prontos porém não consigo fazer com que a classe que le os cpfs e cgcs mandem estes para análise e gravação na classe utilitários
C
Crux
Pessoal sou novo no mundo Java, mas já tenho algumas encrencas pra arrumar, alguem pode me mandar um codigo que leia e compare nome de arquivos e pastas?!?!
Fico no aguardo de uma ajuda.
Obrigado!
ricardolecheta
veja a classe File.
File f = new File(“teste.txt”);
f… veja os metodos
deve ter o que vc quer
N
nirsu
Realmente agora deu certo, consegui gerar o arquivo, mais voce precisa ver oq ele escreveu no arquivo, um monte de caracter estranhos, nem da pra achar oq eu digitei… ta mo esquisito, assim num dianta nada !!
¬í sr ItensEstoqueB¹†HøÂ¦ I CodZ FlagI
NivelAtualI NivelMinF PrecoF TotalItemL Descricaot Ljava/lang/String;L Nomeq ~ xp
Cz t aMonitort aMonitor
Isso que ta no arquivo, alguem sabe pq ???
ricardolecheta
para ler o arquivo use ObjectInputStream que funciona.
tá tudo certo com o arquivo, de uma pesquisada sobre serialização que vc vai entender…
o que acontece é que as informações não foram gravadas em modo texto, se vc quiser que seja asism use a classe PrintWriter e faça println.
Com o PrintWriter é a mesma coisa do que fazer System.out.println… só que é para arquivos
qualquer dúvida é só perguntar
N
nirsu
Ahhh deixa queto !!! Ninguem ta conseguindo me ajudar… dicas pra la, dicas pra ca, mais como faze memo nada…
Valeu a ajuda ai !!!
ricardolecheta
no código que lhe passe anteriormente eu mostrei como se faz com o PrintWriter
Depois de abrir o arquivo, vc faz out.println() igual como se faz System.out.println(), então basta imprimir os valores do seu objeto chamando os métodos get
assim faz em modo texto, é bem simples usar o PrintWriter. É igual fazer System.out.println();
N
nirsu
Me ajuda no seguinte, entendi o que é pra fazer segue um trecho do meu código:
//Antes disso eu peço os dados e guardo através do set’s no objeto Itens
write.println("–> Codigo : "+Itens.getCod());write.println("–> Nome : "+Itens.getNome());write.println("–> Descricao : "+Itens.getDesc());write.println("–> Nivel Atual : "+Itens.getNivelAtual());write.println("–> Nivel Minimo : "+Itens.getNivelMin());write.println("–> Preco : "+Itens.getPreco());write.println("---------------------------------------------");write.close();
Seria isso né ?
Se for me ajuda a criar uma outra classe por ser Arquivo onde teria os métodos de escreita e leitura do arquivo e passaria como parâmetro o objeto Itens, tem jeito ???
ricardolecheta
está certo como fez…
vc pode fazer algo assim:
publicclassArquivo{privateStringnameFile;privatePrintWriterwrite;privateBufferedReaderreader;publicArquivo(StringnameFile){this.nameFile=nameFile;}publicvoidwrite(ItensEstoqueitem){write=newPrintWriter(newFileOutputStream(nameFile));write.println("--> Codigo : "+item.getCod());write.println("--> Nome : "+item.getNome());write.close();}publicItensEstoqueread(){reader=newBufferedReader(newFileReader(nameFile));ItensEstoqueitem;Stringline=null;while((line=reader.readLine())!=null){System.out.println(line);// agora vc precisa fazer uma parser para recuperar//somente o que quiseritem.setCod(...);item.setNome(...);}reader.close();returnitem;}}
N
nirsu
Isso mesmo… tava errando uma coisa no método de escrever, mais agora ta beleza.
Agora no método de ler num intendi, num caiu a ficha:
Tipo, pq criou um método para retornar o objeto Itens, num saquei ? e pq usa os métodos de set’s dentro desse método ?
ricardolecheta
vc vai ler do arquivo certo ?
ao fazer readLine() ele retorna a linha que vc escreveu:
vai retornar algo assim: “Codigo : 1” mas vc precisa somente do número 1.
eu fiz retornar um objeto porque ao ler do arquivo, vc cria um novo objeto new ItensEstoque()… e depois da um “set” em todas as propriedades, então o objeto vai estar preenchido e pronto para ser retornado.
então fora do método, de quem o chamou, vc pode recuperar o objeto assim
ItensEstoque item = arquivo.read(); // le do arquivo e retorna um objeto
veja que seria melhor retornar uma lista
blz ?
N
nirsu
Ahhhhhhh, agora saquei… mas agora não faço a mínima ideía de como pegar somente o 1 do “–> Codigo: 1”, poderia me ajudar. Me ajudando nesse acho que consigo fazer nos outros atributos.
Se num for abusa muito, como seria criar uma lista ? Como ficaria o código ?
Ahhh, ta dando erro na classe Arquivo que voce crio:
C:j2sdk1.4.1_02arquivos_javaFulanoArquivo.java:15: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
write = new PrintWriter(new FileOutputStream(NomeArquivo));
ricardolecheta
java.io.FileNotFoundException
vc precisa colocar tudo em um bloco try{}catch(Exception e){}
quanto a Lista crie um ArrayList e chame o método add(Object) para adicionar as instacias que vc criar… então retorne a lista ao invés de um objeto apenas
quanto ao arquivo utilize a classe StringTokenizer
N
nirsu
Tipo, ta dando o seguinte Exception logo depois que entro com os dados e chama o método Arquivo que escreve no arquivo:
Como eu faria para pegar cod, nome, descricao e retornar tudo como um objeto ?
Ou tem outra forma melhor de fazer ???
N
nirsu
Poxa, não tem ninguem que pode me ajudar ???
Alowww…!!!
cancao
Olá, se vc vai manter a formatação do arquivo assim, vc poderia usar uma BufferedReader para ler linha a linha e depois usar uma StringTokenizer para dividir a linha. Depois, vc percorreria os tokens, e como vc sabe exatamente o que cada um deles representa, crie os objetos desejados com eles. Espero que isso ajude.
Até mais.
M
mindu
Olá pessoal,
Estou usando a dica do ricardolecheta para escrever e ler um objeto no arquivo texto:
porém dessa maneira ele sempre sobrescreve o objeto, minha intenção é gravar varios objetos no mesmo arquivo.
Como faço isso ? e para recuperar essa lista de objetos utilizo o readLine() ?
valeu
ricardolecheta
no construtor de FileOutputStream vc pode passar um boolean=true para fazer append no arquivo, senão ele sempre cria um novo
M
mindu
nesse caso ele esta lendo um só !
até fiz assim e funcionou,
estou com difuculdades em fazer ele percorrer o arquivo e ir listando.
Quando eu usava o BufferedReader
eu usava o readline(),
mas no caso de ObjectInputStream acho que é de outra maneira.
Rogerio_JAVA
Fiz desse jeito e não dei certo.
N
New_Radical
"mindu":
e para recuperar essa lista de objetos utilizo o readLine() ?
Para ler, vc pode usar ObjectInputStream, FileInputStream.
ObjectInputStream input =
new ObjectInputStream(
new FileInputStream(new File(path)));
Pessoa person = (Pessoa) input.readObject();
input.close();