1
resposta

Acho que o erro é no arquivo Recursos que não é reconhecido

package br.com.alura.bytebank.io;

import br.com.alura.bytebank.model.Pagamento;
import br.com.alura.bytebank.model.Tipo;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class LeitorPagamento {

    public static final String RECURSOS = "recursos";
    public static final String BACKUP = "backup";

    private void geraBackup(Path arquivo) throws IOException {
        Path backup = Paths.get(BACKUP);
        if (!Files.isDirectory(backup)) {
            Files.createDirectory(backup);
        }

        Path nomeDoArquivo = arquivo.getFileName();

        String arquivoAbsoluto = System.currentTimeMillis() + "-" + nomeDoArquivo.toString();

        Path origem = Paths.get(arquivo.toString());
        Path destino = Paths.get(backup.toString(), arquivoAbsoluto);

        Files.copy(origem, destino);

    }

    public List<Pagamento> ler(int codigo) throws IOException {
        String arquivo = devolveArquivo(codigo);

        ArrayList<Pagamento> pagamentos = new ArrayList<>();

        Path caminho = Paths.get(arquivo);

        List<String> linhas = Files.readAllLines(caminho, Charset.forName("utf-8"));

        linhas.forEach(linha -> {
            String[] palavras = linha.split(",");
            if (!linha.isEmpty()) {
                Double valor = Double.valueOf(palavras[0]);
                String descricao = palavras[1];
                Tipo tipo = Tipo.valueOf(palavras[2]);
                Pagamento pagamento = new Pagamento(tipo, valor, descricao);
                pagamentos.add(pagamento);
            }
        });

        geraBackup(caminho);
        return pagamentos;
    }

    private String devolveArquivo(int codigo) throws IOException {
        Iterator<Path> arquivos = lista();
        int i = 0;

        Path path = null;

        while (i < codigo) {
            path = arquivos.next();
            i++;
        }

        return path.toString();
    }

    public Iterator<Path> lista() throws IOException {
        return Files.newDirectoryStream(Paths.get(RECURSOS)).iterator();
    }
}
1 resposta

Oi Claudio, tudo bem?

Não entendi muito bem, está tendo algum problema nesse código enviado?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software