Pessoal fiz a seguinte classe no java, produto com o seus atributos e métodos, e o método para gravar e ler o arquivo.
Só que não estou conseguindo fazer uma classe especifica para ler o arquivo e para gravar o arquivo.
Fiz uma classe para cada e herdei da minha classe produto, só que quando eu vou add os valores vao tudo como null.
Estou querendo fazer uma classe para leitura e outra para gravar, e chamar no método MAIN.
Ha ponto importante tbm que so conseguir mandar os valores sendo todos string, não conseguir mandar como int e double
packagebr.com.Miquilino.trabalho;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjavax.swing.JOptionPane;publicclassCadastraProdutoMain{publicstaticvoidmain(String[]args){Produtocad=newProduto();Stringcod=JOptionPane.showInputDialog("Informe o codigo do produto");Stringnome=JOptionPane.showInputDialog("Informe o nome do produto");Stringvalor=JOptionPane.showInputDialog("Informe o valor do produto");cad.setCodProduto(cod);cad.setNomeProd(nome);cad.setValorProd(valor);cad.criarArquvio();}}
Classe produto com os métodos e o método para gravar e ler o arquivo
packagebr.com.Miquilino.trabalho;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjavax.swing.JOptionPane;publicclassProduto{privateStringcodProduto;privateStringnomeProd;privateStringvalorProd;publicStringgetCodProduto(){returncodProduto;}publicvoidsetCodProduto(StringcodProduto){this.codProduto=codProduto;}publicStringgetNomeProd(){returnnomeProd;}publicvoidsetNomeProd(StringnomeProd){this.nomeProd=nomeProd;}publicStringgetValorProd(){returnvalorProd;}publicvoidsetValorProd(StringvalorProd){this.valorProd=valorProd;}publicvoidcriarArquvio(){Filearquivo=newFile("C:\\dados\\produto.txt");try{if(!arquivo.exists()){//cria um arquivo vazioarquivo.createNewFile();}//caso seja um diretorio, é possivel listar seus arquivos e diretórios File[]arquivos=arquivo.listFiles();//escrever no arquivoFileWriterfw=newFileWriter(arquivo,true);BufferedWriterbw=newBufferedWriter(fw);bw.write(this.getCodProduto()+";");bw.write(this.getNomeProd()+";");bw.write(this.getValorProd()+"");bw.newLine();bw.close();fw.close();//faz a leitura do arquivoFileReaderfr=newFileReader(arquivo);BufferedReaderbr=newBufferedReader(fr);//enquanto houver mais linhaswhile(br.ready()){//le a proxima linhaStringlinha=br.readLine();//faz algo com a linhaSystem.out.println(linha);//JOptionPane.showMessageDialog(null, linha);}br.close();fr.close();}catch(IOExceptionex){ex.printStackTrace();}}}
os metodos precisam receber a localizacao do arquivo e o que ele deve gravar se for para gravar o arquivo
entendeu ?
B
bruce1010
entao CristianPalmaSola10 eu fiz a classe principal, ai fiz uma classe produto com os métodos, nome, cod e preço até aqui tudo bem..
ai fiz uma outra classe que chama cadProduto, ai herdei da classe produto, so que nao hora de gravar, gravar como null...
packagebr.com.Teste.Cadastro;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;publicclasscadProdutoextendsProduto{publicvoidcriarArquvio(){Filearquivo=newFile("C:\\dados2\\produto.txt");try{if(!arquivo.exists()){//cria um arquivo vazioarquivo.createNewFile();}//caso seja um diretorio, é possivel listar seus arquivos e diretórios File[]arquivos=arquivo.listFiles();//escrever no arquivoFileWriterfw=newFileWriter(arquivo,true);BufferedWriterbw=newBufferedWriter(fw);bw.write(this.getCodProd()+";");bw.write(this.getNome()+";");bw.write(this.getValorProd()+"");bw.newLine();bw.close();fw.close();//faz a leitura do arquivoFileReaderfr=newFileReader(arquivo);BufferedReaderbr=newBufferedReader(fr);//enquanto houver mais linhaswhile(br.ready()){//le a proxima linhaStringlinha=br.readLine();//faz algo com a linhaSystem.out.println(linha);//JOptionPane.showMessageDialog(null, linha);}br.close();fr.close();}catch(IOExceptionex){ex.printStackTrace();}}}
CristianPalmaSola10
Claro que grava essa sua classe deve gravar mas naum herdar de produto, estude um pouco de heranca , na minha opiniao deveria haver apenas um parametro do tipo string para seja o que deve sergravado
publicclassGravarArquivo{publicvoidcriarArquvio(StringtextoArquivo,Stringlocalizacao){Filearquivo=newFile(localizacao);try{if(!arquivo.exists()){//cria um arquivo vazio arquivo.createNewFile();}//caso seja um diretorio, é possivel listar seus arquivos e diretórios File[]arquivos=arquivo.listFiles();//escrever no arquivo FileWriterfw=newFileWriter(arquivo,true);BufferedWriterbw=newBufferedWriter(fw);bw.write(textoArquivo);bw.newLine();bw.close();fw.close();//faz a leitura do arquivo FileReaderfr=newFileReader(arquivo);BufferedReaderbr=newBufferedReader(fr);//enquanto houver mais linhas while(br.ready()){//le a proxima linha Stringlinha=br.readLine();//faz algo com a linha System.out.println(linha);//JOptionPane.showMessageDialog(null, linha); }br.close();fr.close();}catch(IOExceptionex){ex.printStackTrace();}}}
acho que iisso funciona, estude heranca
porque fica bulo
porque voce tinha um produto populado e na hora de gravar voce criava uma instacia da classe de gravacao mas que extendia o produto, entao esta classe tinha todos atributos e metodos do produtos mas com valor null porque esta classe tinha acabado de ser criada…
B
bruce1010
acho que eu sou muito burrinho, eu to querendo fazer um programa q cadastra produto, codProd, nomeProd, ValorProd.
ai eu add ai nessa classe q vc passou por parametro, so que agora ta dando erro na variavel bw.write(textoArquivo). aff
tenho que entregar esse trabalho hj. mas esta complicado
packagebr.com.Teste.Cadastro;importjavax.swing.JOptionPane;publicclassMainCadastro{publicstaticvoidmain(String[]args){Produtoprod=newProduto();intcod=Integer.parseInt(JOptionPane.showInputDialog("Informe o cod do produto"));Stringnome=JOptionPane.showInputDialog("Informe o nome do produto");doublevalor=Double.parseDouble(JOptionPane.showInputDialog("Valor do produto"));prod.setCodProd(cod);prod.setNome(nome);prod.setValorProd(valor);gravaArquivocadastra=newgravaArquivo();cadastra.criarArquvio(cod,nome,valor,"C:\\dados2\\produto.txt");//cadProduto cadastra = new cadProduto();//cadastra.criarArquvio();}}
packagebr.com.Teste.Cadastro;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;publicclassgravaArquivo{publicvoidcriarArquvio(intcod,Stringnome,doublevalor,Stringlocalizacao){Filearquivo=newFile(localizacao);try{if(!arquivo.exists()){//cria um arquivo vazio arquivo.createNewFile();}//caso seja um diretorio, é possivel listar seus arquivos e diretórios File[]arquivos=arquivo.listFiles();//escrever no arquivo FileWriterfw=newFileWriter(arquivo,true);BufferedWriterbw=newBufferedWriter(fw);bw.write(textoArquivo);bw.newLine();bw.close();fw.close();//faz a leitura do arquivo FileReaderfr=newFileReader(arquivo);BufferedReaderbr=newBufferedReader(fr);//enquanto houver mais linhas while(br.ready()){//le a proxima linha Stringlinha=br.readLine();//faz algo com a linha System.out.println(linha);//JOptionPane.showMessageDialog(null, linha); }br.close();fr.close();}catch(IOExceptionex){ex.printStackTrace();}}}
B
bruce1010
bruce1010:
acho que eu sou muito burrinho, eu to querendo fazer um programa q cadastra produto, codProd, nomeProd, ValorProd.
ai eu add ai nessa classe q vc passou por parametro, so que agora ta dando erro na variavel bw.write(textoArquivo). aff
tenho que entregar esse trabalho hj. mas esta complicado
packagebr.com.Teste.Cadastro;importjavax.swing.JOptionPane;publicclassMainCadastro{publicstaticvoidmain(String[]args){Produtoprod=newProduto();intcod=Integer.parseInt(JOptionPane.showInputDialog("Informe o cod do produto"));Stringnome=JOptionPane.showInputDialog("Informe o nome do produto");doublevalor=Double.parseDouble(JOptionPane.showInputDialog("Valor do produto"));prod.setCodProd(cod);prod.setNome(nome);prod.setValorProd(valor);gravaArquivocadastra=newgravaArquivo();cadastra.criarArquvio(cod,nome,valor,"C:\\dados2\\produto.txt");//cadProduto cadastra = new cadProduto();//cadastra.criarArquvio();}}
packagebr.com.Teste.Cadastro;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;publicclassgravaArquivo{publicvoidcriarArquvio(intcod,Stringnome,doublevalor,Stringlocalizacao){Filearquivo=newFile(localizacao);try{if(!arquivo.exists()){//cria um arquivo vazio arquivo.createNewFile();}//caso seja um diretorio, é possivel listar seus arquivos e diretórios File[]arquivos=arquivo.listFiles();//escrever no arquivo FileWriterfw=newFileWriter(arquivo,true);BufferedWriterbw=newBufferedWriter(fw);bw.write(textoArquivo);bw.newLine();bw.close();fw.close();//faz a leitura do arquivo FileReaderfr=newFileReader(arquivo);BufferedReaderbr=newBufferedReader(fr);//enquanto houver mais linhas while(br.ready()){//le a proxima linha Stringlinha=br.readLine();//faz algo com a linha System.out.println(linha);//JOptionPane.showMessageDialog(null, linha); }br.close();fr.close();}catch(IOExceptionex){ex.printStackTrace();}}}