Como trabalhar com Files e Path do java.nio.file do Java

Quem trabalha com desenvolvimento sabe que é bastante comum precisar fazer a leitura de arquivos usando Java, neste post vou mostrar como ficou fácil usando Java 8

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 18321 Visualizações

Para carregar os bytes de um arquivo usando Java 8 é muito simples, primeiro precisamos de uma arquivo de exemplo, neste caso utilizaremos uma imagem que está em: /home/wolmir/ubuntu.png e utilizaremos os pacotes java.nio.file.*.

Carregando os bytes de uma imagem


Agora que temos o arquivo em um determinado diretório vamos fazer a leitura dos bytes:

import java.nio.file.*;

// Primeiro utilize o Path para localizar o arquivo
Path path = Paths.get("/home/wolmir/ubuntu.png");

// Tendo o path pode carregar o arquivo
byte[] bytesArquivo = Files.readAllBytes(path);

Bastante simples. Agora vamos ver como escrever os bytes.

Gravando os bytes para um arquivo


Para fazer o processo inverso, utilizaremos os bytes carregados da imagem acima, considere o código:

import java.nio.file.*;

// Primeiro utilize o Path para localizar o arquivo
Path path = Paths.get("/home/wolmir/ubuntu.png");

// Tendo o path pode carregar o arquivo
byte[] bytesArquivo = Files.readAllBytes(path);

// gravamos os bytes em outro arquivo
Path pathTo = Paths.get("/home/wolmir/ubuntu-2.png");
Files.write(pathTo, bytesArquivo);

Outros métodos também podem ser úteis para você, veja:

Carregar as linhas de um arquivo texto


Ainda você pode fazer a leitura do arquivo utilizando o Files, para este exemplo utilizaremos um arquivo texto gravado em /home/wolmir/meu-arquivo.txt veja:

import java.nio.file.*;

// Primeiro utilize o Path para localizar o arquivo
Path path = Paths.get("/home/wolmir/meu-arquivo.txt");

List<String> linhasArquivo = Files.readAllLines(p);
for (String linha : linhasArquivo) {
    System.out.println( linha ); 
}

Ainda se quiser fazer a leitura do arquivo utilizando um Stream, pode fazer da seguinte forma:

Files.lines(path).forEach(System.out::println);

Obterá o mesmo resultado.

Qualquer dúvida deixe nos comentários!


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!