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

Postado em por Wolmir Cezer Garbin em Java | 173 Visualizações
Última atualização em:

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

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!

Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

Posts relacionados


Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar