[RESOLVIDO] Dúvidas com ArrayList e java.io.File (listagem de diretório)

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.

E qual é a sua dúvida?

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.