[quote]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[/quote]
[code]package br.com.Miquilino.trabalho;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class CadastraProdutoMain {
public static void main(String[] args) {
Produto cad = new Produto();
String cod = JOptionPane.showInputDialog("Informe o codigo do produto");
String nome = JOptionPane.showInputDialog("Informe o nome do produto");
String valor = JOptionPane.showInputDialog("Informe o valor do produto");
cad.setCodProduto(cod);
cad.setNomeProd(nome);
cad.setValorProd(valor);
cad.criarArquvio();
}
}
[/code]
[code]package br.com.Miquilino.trabalho;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class Produto {
private String codProduto;
private String nomeProd;
private String valorProd;
public String getCodProduto() {
return codProduto;
}
public void setCodProduto(String codProduto) {
this.codProduto = codProduto;
}
public String getNomeProd() {
return nomeProd;
}
public void setNomeProd(String nomeProd) {
this.nomeProd = nomeProd;
}
public String getValorProd() {
return valorProd;
}
public void setValorProd(String valorProd) {
this.valorProd = valorProd;
}
public void criarArquvio(){
File arquivo = new File("C:\\dados\\produto.txt");
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
FileWriter fw = new FileWriter(arquivo, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(this.getCodProduto() + ";");
bw.write(this.getNomeProd() + ";");
bw.write(this.getValorProd() + "");
bw.newLine();
bw.close();
fw.close();
//faz a leitura do arquivo
FileReader fr = new FileReader(arquivo);
BufferedReader br = new BufferedReader(fr);
//enquanto houver mais linhas
while(br.ready()){
//le a proxima linha
String linha = br.readLine();
//faz algo com a linha
System.out.println(linha);
//JOptionPane.showMessageDialog(null, linha);
}
br.close();
fr.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
[/code]
Voce criar uma classe generica
crie a classe gravarTxt algo assim
crie um metodo que grava e um que le
os metodos precisam receber a localizacao do arquivo e o que ele deve gravar se for para gravar o arquivo
entendeu ?
[quote]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…[/quote]
[code]package br.com.Teste.Cadastro;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class cadProduto extends Produto {
public void criarArquvio(){
File arquivo = new File("C:\\dados2\\produto.txt");
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
FileWriter fw = new FileWriter(arquivo, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(this.getCodProd() + ";");
bw.write(this.getNome() + ";");
bw.write(this.getValorProd() + "");
bw.newLine();
bw.close();
fw.close();
//faz a leitura do arquivo
FileReader fr = new FileReader(arquivo);
BufferedReader br = new BufferedReader(fr);
//enquanto houver mais linhas
while(br.ready()){
//le a proxima linha
String linha = br.readLine();
//faz algo com a linha
System.out.println(linha);
//JOptionPane.showMessageDialog(null, linha);
}
br.close();
fr.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}[/code]
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
public class GravarArquivo {
public void criarArquvio(String textoArquivo, String localizacao){
File arquivo = new File(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
FileWriter fw = new FileWriter(arquivo, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(textoArquivo);
bw.newLine();
bw.close();
fw.close();
//faz a leitura do arquivo
FileReader fr = new FileReader(arquivo);
BufferedReader br = new BufferedReader(fr);
//enquanto houver mais linhas
while(br.ready()){
//le a proxima linha
String linha = br.readLine();
//faz algo com a linha
System.out.println(linha);
//JOptionPane.showMessageDialog(null, linha);
}
br.close();
fr.close();
}catch(IOException ex){
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…
[quote]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[/quote]
[code]package br.com.Teste.Cadastro;
import javax.swing.JOptionPane;
public class MainCadastro {
public static void main(String[] args) {
Produto prod = new Produto();
int cod = Integer.parseInt(JOptionPane.showInputDialog("Informe o cod do produto"));
String nome = JOptionPane.showInputDialog("Informe o nome do produto");
double valor = Double.parseDouble(JOptionPane.showInputDialog("Valor do produto"));
prod.setCodProd(cod);
prod.setNome(nome);
prod.setValorProd(valor);
gravaArquivo cadastra = new gravaArquivo();
cadastra.criarArquvio(cod,nome,valor, "C:\\dados2\\produto.txt");
//cadProduto cadastra = new cadProduto();
//cadastra.criarArquvio();
}
}[/code]
[code]package br.com.Teste.Cadastro;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class gravaArquivo {
public void criarArquvio(int cod, String nome, double valor, String localizacao){
File arquivo = new File(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
FileWriter fw = new FileWriter(arquivo, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(textoArquivo);
bw.newLine();
bw.close();
fw.close();
//faz a leitura do arquivo
FileReader fr = new FileReader(arquivo);
BufferedReader br = new BufferedReader(fr);
//enquanto houver mais linhas
while(br.ready()){
//le a proxima linha
String linha = br.readLine();
//faz algo com a linha
System.out.println(linha);
//JOptionPane.showMessageDialog(null, linha);
}
br.close();
fr.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
[/code]
[quote=bruce1010][quote]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[/quote]
[code]package br.com.Teste.Cadastro;
import javax.swing.JOptionPane;
public class MainCadastro {
public static void main(String[] args) {
Produto prod = new Produto();
int cod = Integer.parseInt(JOptionPane.showInputDialog("Informe o cod do produto"));
String nome = JOptionPane.showInputDialog("Informe o nome do produto");
double valor = Double.parseDouble(JOptionPane.showInputDialog("Valor do produto"));
prod.setCodProd(cod);
prod.setNome(nome);
prod.setValorProd(valor);
gravaArquivo cadastra = new gravaArquivo();
cadastra.criarArquvio(cod,nome,valor, "C:\\dados2\\produto.txt");
//cadProduto cadastra = new cadProduto();
//cadastra.criarArquvio();
}
}[/code]
[code]package br.com.Teste.Cadastro;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class gravaArquivo {
public void criarArquvio(int cod, String nome, double valor, String localizacao){
File arquivo = new File(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
FileWriter fw = new FileWriter(arquivo, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(textoArquivo);
bw.newLine();
bw.close();
fw.close();
//faz a leitura do arquivo
FileReader fr = new FileReader(arquivo);
BufferedReader br = new BufferedReader(fr);
//enquanto houver mais linhas
while(br.ready()){
//le a proxima linha
String linha = br.readLine();
//faz algo com a linha
System.out.println(linha);
//JOptionPane.showMessageDialog(null, linha);
}
br.close();
fr.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
[/code]
[/quote]