package Prod;
public class Produto {
private int codigo;//4 bytes
private double valor;//8 bytes
private String nome;// nome ate 40 letras = 80 bytes
public static int tamnome = 40;
public static int tamdados = 4 + 8 + 80;
public Produto(String nome, double valor, int codigo){
this.nome = nome;
this.valor = valor;
this.codigo = codigo;
}
public Produto() {
super();
// TODO Auto-generated constructor stub
}
public String getNome(){
return nome;
}
@Override
public String toString() {
return "Produto [codigo=" + codigo + ", valor=" + valor + ", nome="
+ nome + "]";
}
public void setNome(String nome){
this.nome = nome;
}
public int getCodigo(){
return codigo;
}
public void setCodigo(int codigo){
this.codigo = codigo;
}
public double getValor(){
return valor;
}
public void setValor(double valor){
this.valor = valor;
}
}
package Prod;
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
public class Manipula {
private RandomAccessFile RAF_Produto;
private List<Produto> Lista_de_Produto;
private final int CodigoInicial = 1001;
private String Caminho_Produto;
public Manipula(String Caminho_P){
Caminho_Produto = Caminho_P;
try{
RAF_Produto = new RandomAccessFile(Caminho_Produto, "rw");
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
public List<Produto> getLista_de_Produtos() {
atualizarListaProduto();
return Lista_de_Produto;
}
private void atualizarListaProduto(){
try // lê um registro e exibe
{
abrirEFechar();
RAF_Produto.seek( 0 );
Lista_de_Produto= new ArrayList<Produto>();
while (true) {
Produto P = produto_ler();
if(P.getCodigo()!=0)
Lista_de_Produto.add(P);
}
}
catch (EOFException eofException)
{
return;
}
catch (IOException ioException) {
ioException.printStackTrace();
System.out.println("Erro ao ler o arquivo.");
System.exit(1);
}
}
private Produto produto_ler() throws IOException {
Produto P = new Produto();
P.setCodigo(RAF_Produto.readInt());
P.setNome(produto_lerNome());
P.setCodigo(RAF_Produto.readInt());
P.setValor(RAF_Produto.readDouble());
return P;
}
private String produto_lerNome() throws IOException {
char nome[] = new char[Produto.tamnome], temp;
for (int i = 0; i < nome.length; i++) {
temp = RAF_Produto.readChar();
nome[i] = temp;
}
return new String(nome).replace('\0', ' ');
}
private void abrirEFechar() throws IOException
{
if(RAF_Produto!=null)
RAF_Produto.close();
RAF_Produto= new RandomAccessFile(Caminho_Produto, "rw");
}
public void fecharArquivo() throws IOException {
if (RAF_Produto != null)
RAF_Produto.close();
}
public void produto_criarproduto(Produto P){
P.setCodigo(Integer.parseInt(String.valueOf(produto_obterID())));
try{
RAF_Produto.seek((P.getCodigo()-CodigoInicial)*Produto.tamdados);
if(produto_escrever(P)){
System.out.println(("Cadastrado") + P.toString());
}else
System.out.println("Erro1");
}catch(IOException e){
System.out.println("Erro2");
}
}
private long produto_obterID(){
try{
long tam;
tam = RAF_Produto.length();
return CodigoInicial+(tam/Produto.tamdados);
}catch(IOException e){
e.printStackTrace();
return -1;
}
}
private boolean produto_escrever(Produto P){
try{
RAF_Produto.writeInt(P.getCodigo());
produto_escreverNome(P.getNome());
RAF_Produto.writeDouble(P.getValor());
}catch(IOException e){
e.printStackTrace();
return false;
}
return false;
}
private void produto_escreverNome(String nome)throws IOException{
StringBuffer buffer = null;
if(nome!=null)
buffer = new StringBuffer(nome);
else
buffer = new StringBuffer(Produto.tamnome);
buffer.setLength(Produto.tamnome);
RAF_Produto.writeChars(buffer.toString());
}
}
package Prod;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner entrada = new Scanner(System.in);
Manipula M = new Manipula("Produtos.txt");
Produto Novo = new Produto();
//Dependente NovoD = new Dependente();
//int opcao=0,opcao1 = 0;
//for (int x=0;x<10;x++){
Novo.setNome("Bernardo ");
Novo.setCodigo(1001);
Novo.setValor(500);
M.produto_criarproduto(Novo);
//}
}
}
Não consigo escrever arquivo
D
1 Resposta
Da uma olhada nesse tutorial Manipulando Arquivo Txt com Java
Acho que faltou você chamar o método flush() antes de fechar o arquivo.
Criado 4 de abril de 2013
Ultima resposta 4 de abr. de 2013
Respostas 1
Participantes 2
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo