Gravação em Arquivo TXT

5 respostas
B
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

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();
		
		

	}
}
Classe produto com os métodos e o método para gravar e ler o arquivo
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();
		}
	}
	 
	
}

5 Respostas

CristianPalmaSola10

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 ?

B
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...
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();
		}
	}
}
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

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…

B
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
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();
	}

}
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();    
	        }    
	    }    
	}
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
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();
	}

}
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();    
	        }    
	    }    
	}

detalhe eu tenho que ter 10 classe desse programa
Criado 4 de abril de 2013
Ultima resposta 4 de abr. de 2013
Respostas 5
Participantes 2