Primeiramente gostaria de pedir desculpas se postei o tópico em lugar errado.
Tenho o seguinte código:
[code]package View;
import Controller.;
import Model.;
import java.util.*;
import java.io.File;
public class TesteArray {
public static ArrayList<Cliente> cl = new ArrayList<Cliente>();
public static void mostrar() {
for (int i = 0; i < cl.size(); ++i) {
System.out.println(cl.get(i).getNome());
}
}
/** Exibe uma listagem do arquivo ou diretório. */
public void listar(File file) {
if (file.isDirectory()) {
// Exibe o nome do diretório
System.out.print("+ Dir: ");
String n = file.getName();
System.out.println(n);
File[] lista = file.listFiles();
// Faz uma chamada recursiva para exibir os arquivos e
//subdiretórios
registerClient rc = new registerClient();
for (int i = 0; i < lista.length; i++) {
listar(lista[i]);
cl.add(rc.Retrieve(n));
}
} else {
// Exibe o nome do arquivo
System.out.print("* Arq: ");
String n = file.getName();
n.replace(".txt", "");
System.out.println(n);
registerClient rc = new registerClient();
cl.add(rc.Retrieve(n));
}
}
public void filesar() {
TesteArray teste = new TesteArray();
File file = new File("src/cadastro/Cliente/");
teste.listar(file);
}
}[/code]
Daí vem o problema. Estou começando a mexer com ArrayList e Listagem de Arquivos agora. Em meu projeto a parte de cadastro de clientes, funcionários e produtos está pronta, agora estou fazendo a parte de venda, minha idéia era quando abrir o aplicativo e fizer o login, todos os cadastros de clientes e de produtos fossem carregados para uma ArrayList para ficar mais fácil de manipulá-los (cada cadastro de cliente e produto se encontra em um arquivo .txt separado, um no diretório de cadastro de clientes e outro no diretório de cadastro de produtos). Na venda eu iria entrar com o CPF do cliente e iria aparecer em um JLabel o nome do respectivo cliente, depois iria escolher o pacote em um JComboBox (já está feito), e após isso eu iria apresentar um JList com a lista dos produtos, que serão poucos, para o funcionário selecionar os produtos que o cliente quiser e adicionar em um JTextPane ou algo do gênero. O aplicativo faria a soma de todos os produtos com o pacote e guardaria em um arquivo ou em um ArrayList pois o cliente, do quarto dele, poderia fazer o pedido de novos produtos que seriam adicionados nesse arquivo ou ArrayList para ser pago no fechamento da conta.
Me desculpem se o texto ficou grande, acho que só explicando assim vocês poderiam entender qual minha situação. Se tiverem outra solução para o problema usando outro tipo de lógica podem falar também.
Qualquer dúvida irei responder o mais rápido possível.
Obrigado à todos.
Puts, esqueci do mais importante :oops:
Então, eu não consegui fazer que o Array pegasse os nomes dos arquivos que foram listados para abrir cada um deles e salvar no Array.
Na classe que abre os arquivos de cliente está assim:
public Cliente Retrieve(String nome) {
Cliente f = new Cliente();
try {
BufferedReader br = new BufferedReader(new FileReader("src/cadastro/Cliente/" + nome+ ".txt")); //Abre o arquivo
/*
* Lê os dados
* Cada br.readLine lê uma linha
*/
f.setNome(br.readLine());
f.setTelefone(br.readLine());
f.setCelular(br.readLine());
f.setEmail(br.readLine());
f.getEndereco().setBairro(br.readLine());
f.getEndereco().setCep(br.readLine());
f.getEndereco().setCidade(br.readLine());
f.getEndereco().setEstado(br.readLine());
f.getEndereco().setNumero(br.readLine());
f.getEndereco().setRua(br.readLine());
f.setRg(br.readLine());
f.setCpf(br.readLine());
f.setDataNascimento(br.readLine());
f.setSexo(br.readLine());
f.setVip(Boolean.getBoolean(br.readLine()));
br.close();
return f;
} catch (IOException erro) {
JOptionPane.showMessageDialog(null, "Cadastro não encontrado");
return null;
}
}
Ou seja, quando for pega a lista de arquivos existentes no diretório ele virá assim: nomeDoCliente.txt
E para abrir o arquivo eu só preciso do nomeDoCliente, sem o .txt, por isso usei o método replace(oldChar, newChar).
Mas quando rodo o programa aparece a mensagem “Cadastro não encontrado”. Creio que eu tenha colocado a variável n do código do primeiro post em lugar errado, ou tenha feito o replace no lugar errado.
Porém já mexi bastante nesse código e não encontrei o erro, creio que seja um erro “bobo”, porém não consegui encontrá-lo.
Desculpa pela bobeada de ter falado, falado e esquecido de colocar a dúvida :roll:
Opa e ai beleza ?
Primeiro certifique-se que o arquivo realmente existe no local especificado. As vezes é algo simples assim…
Voce pode fazer tambem é montar uma string auxiliar para ver como ficou o nome de arquivo completo usando o debug do Java. Por exemplo:
public Cliente Retrieve(String nome) {
String aux = "src/cadastro/Cliente/" + nome+ ".txt"; //Coloque um Stop de depuração aqui
Cliente f = new Cliente();
try {
BufferedReader br = new BufferedReader(new FileReader(aux)); //Abre o arquivo
/*
* Lê os dados
* Cada br.readLine lê uma linha
*/
f.setNome(br.readLine());
f.setTelefone(br.readLine());
f.setCelular(br.readLine());
f.setEmail(br.readLine());
f.getEndereco().setBairro(br.readLine());
f.getEndereco().setCep(br.readLine());
f.getEndereco().setCidade(br.readLine());
f.getEndereco().setEstado(br.readLine());
f.getEndereco().setNumero(br.readLine());
f.getEndereco().setRua(br.readLine());
f.setRg(br.readLine());
f.setCpf(br.readLine());
f.setDataNascimento(br.readLine());
f.setSexo(br.readLine());
f.setVip(Boolean.getBoolean(br.readLine()));
br.close();
return f;
} catch (IOException erro) {
JOptionPane.showMessageDialog(null, "Cadastro não encontrado:" + erro.getMessage());
return null;
}
}
Outra coisa, quando for mostrar uma mensagem de erro, mostre a mensagem original pois o seu Try tem bastante coisa depois da abertura do arquivo em si que pode estar dando algum erro.
Inté!
[quote=vinians]Opa e ai beleza ?
Primeiro certifique-se que o arquivo realmente existe no local especificado. As vezes é algo simples assim…
Voce pode fazer tambem é montar uma string auxiliar para ver como ficou o nome de arquivo completo usando o debug do Java. Por exemplo:
public Cliente Retrieve(String nome) {
String aux = "src/cadastro/Cliente/" + nome+ ".txt"; //Coloque um Stop de depuração aqui
Cliente f = new Cliente();
try {
BufferedReader br = new BufferedReader(new FileReader(aux)); //Abre o arquivo
/*
* Lê os dados
* Cada br.readLine lê uma linha
*/
f.setNome(br.readLine());
f.setTelefone(br.readLine());
f.setCelular(br.readLine());
f.setEmail(br.readLine());
f.getEndereco().setBairro(br.readLine());
f.getEndereco().setCep(br.readLine());
f.getEndereco().setCidade(br.readLine());
f.getEndereco().setEstado(br.readLine());
f.getEndereco().setNumero(br.readLine());
f.getEndereco().setRua(br.readLine());
f.setRg(br.readLine());
f.setCpf(br.readLine());
f.setDataNascimento(br.readLine());
f.setSexo(br.readLine());
f.setVip(Boolean.getBoolean(br.readLine()));
br.close();
return f;
} catch (IOException erro) {
JOptionPane.showMessageDialog(null, "Cadastro não encontrado:" + erro.getMessage());
return null;
}
}
Outra coisa, quando for mostrar uma mensagem de erro, mostre a mensagem original pois o seu Try tem bastante coisa depois da abertura do arquivo em si que pode estar dando algum erro.
Inté![/quote]
Boas dicas, muito obrigado.
Já vi que ele não está achando o arquivo pois está procurando sempre pelo nome do diretório, no caso Cliente, e não pelos nomes dos arquivos que estão na listagem.
Tentarei arrumar, qualquer coisa posto denovo aqui.
Consegui.
Está abrindo os arquivos e salvando na ArrayList.
Obrigado pelas dicas, novamente.