Listar arquivos de um diretório Java

Bom dia,

Alguém poderia me salvar?
Estou com uma duvida aqui, quando eu uso o código abaixo para Listar os Arquivos de um diretório, ele lista os arquivos, joga em uma array, porém quando eu faço um for para poder carregar um arquivo por vez, ele só carrega o primeiro arquivo e encerra.

public class Principal {

/**
 * @param args the command line arguments
 * @throws java.lang.Exception
 */
public static void main(String[] args) throws Exception {
    System.out.println("-------------------------------------------------------");
    System.out.println("BEM VINDO");
    System.out.println("INCIANDO OPERACAO");
    System.out.println("------------------------------------------------------");
    
    final Logar Logando = new Logar();
    final int j = 1;
    while (j == 1) {
        int i = 1;
        while (i == 1) {
            try {
               Logando.logar();
               Logando.SelecionarBase();
               GravarLista data =  new GravarLista();
               GerarRotina acesso = new GerarRotina();
               data.escolherArquivos();
               data.Ler();
               acesso.GerandoOs();
            }catch (Exception err) {
                
                System.out.println(err.getMessage());
                System.out.println("*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*");
                System.out.println("*#*#*#*#*#*#*#*#*#*#*#*#ERRO NA EXECU\u00c7\u00c3O*#*#*#*#*#*#*#*#*#*#*#*#*");
                System.out.println("*#*#*#*#*#*#*#*#*#*#*#*#*#REINICIANDO#*#*#*#*#*#*#*#*#*#*#*#*#*#*");
                System.out.println("*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*");
                ++i;
                Logando.Fechar();
                
            }
        }
    }

public void escolherArquivos(){

           File directoryPath = new File("C:\\rt");
           
           System.out.println("LISTANDO OS ARQUIVOS DO DIRETORIO:");
           
           File afile[] = directoryPath.listFiles();
           
           System.out.println(afile.length); // só pra ver o tamanho da lista
           
           for(int i = 0; i <afile.length; i++){
               System.out.println(afile[i].getPath());
               NomeArquivo = afile[i].getPath();   //nomearquivo pega o nome do arquivo e joga em outra estrutura para poder carregar o arquivo.
            
           }

public void Ler(){

    System.out.println("NOME: "+ NomeArquivo);
    
    TextFile arquivo = new TextFile(NomeArquivo);
                 
    try {
        arquivo.openTextFile();
        String[] vDados;
        while (arquivo.next()) {
            String Linha = arquivo.readLine();
            //quebrando alinha por caracter ';'
            vDados = Linha.split(";", -1);
            //mostrando cada campo separado sem aspas !
            Matricula = vDados[0].trim();
            MATRICULA.add(Matricula);
            //System.out.println(Matricula);
            //QtdOS = vDados[1].trim();
            //QTDOS.add(QtdOS);
            //System.out.println(QtdOS);
            ObsOS = vDados[1].trim();
            OBSOS.add(ObsOS);
            //System.out.println(Nome);
            CodOS = vDados[2].trim();
            CODOS.add(CodOS);
            //System.out.println(Conta);
        }
    } catch (IOException e) {
        System.out.println("ERRO: " + e);
    }

}

Olá,
Seu código está incompleto, daí fica difícil ficar adivinhando a forma como programou.
Pode ser que esteja chamando o método Ler() apenas uma vez no seu Main ou esqueceu de colocar no trecho abaixo a chamada para o método no laço For.

Editei lá.