1. Files
aula
Para trabalhar com arquivos, existe uma classe de utilitário inteligente — java.nio.file.Files
. Tem métodos para cada ocasião. Todos os métodos desta classe são estáticos e operam no objeto Path. Existem muitos métodos, portanto, consideraremos apenas os mais importantes:
Método | Descrição |
---|---|
|
Cria um novo arquivo cujo caminho épath |
|
Cria um novo diretório |
|
Cria vários diretórios |
|
Cria um arquivo temporário |
|
Cria um diretório temporário |
|
Exclui um arquivo ou diretório se estiver vazio |
|
Copia um arquivo |
|
Move um arquivo |
|
Verifica se o caminho é um diretório e não um arquivo |
|
Verifica se o caminho é um arquivo e não um diretório |
|
Verifica se existe um objeto no caminho especificado |
|
Retorna o tamanho do arquivo |
|
Retorna todo o conteúdo de um arquivo como uma matriz de bytes |
|
Retorna todo o conteúdo de um arquivo como uma string |
|
Retorna todo o conteúdo de um arquivo como uma lista de strings |
|
Grava uma matriz de bytes em um arquivo |
|
Grava uma string em um arquivo |
|
Retorna uma coleção de arquivos (e subdiretórios) do diretório fornecido |
2. Criando arquivos e diretórios
Arquivos e diretórios são muito fáceis de criar. Vamos nos convencer com alguns exemplos:
Código | Observação |
---|---|
|
Cria um arquivo |
|
Cria um diretório |
|
Cria um diretório e todos os subdiretórios necessários, caso não existam. |
3. Copiar, mover e deletar
Copiar, mover e excluir arquivos é igualmente fácil. Isso também se aplica a diretórios, mas eles devem estar vazios.
Código | Observação |
---|---|
|
Copia um arquivo |
|
Move e renomeia um arquivo |
|
Exclui um arquivo |
4. Verificando o tipo e a existência de um arquivo
Quando você tem um caminho fornecido por outra pessoa, deseja saber se é um arquivo ou um diretório. E, em geral, esse arquivo/diretório existe ou não?
Existem métodos especiais para isso também. Você também pode descobrir facilmente o comprimento de um arquivo:
Código | Observação |
---|---|
|
|
|
|
|
|
|
|
5. Trabalhando com o conteúdo do arquivo
Finalmente, há toda uma série de métodos que facilitam a leitura ou gravação do conteúdo de um arquivo. Exemplo:
Código | Descrição |
---|---|
|
Leia o conteúdo do arquivo como uma lista de strings. Exibir as cordas |
6. Obtendo o conteúdo de um diretório
O método mais interessante ainda permanece. É usado para obter arquivos e subdiretórios em um determinado diretório.
Estamos falando do newDirectoryStream()
método, que retorna um DirectoryStream<Path>
objeto especial. Ele possui um iterador (!) que você pode usar para obter todos os arquivos e subdiretórios de um determinado diretório.
Isto é mais facil do que parece.
Código | Descrição |
---|---|
|
Obter um objeto com uma lista de arquivos Percorrer a lista de arquivos |
O DirectoryStream<Path>
objeto tem duas propriedades. Primeiramente, ele possui um iterador que retorna caminhos de arquivo, e podemos utilizar este objeto dentro de um for-each
loop.
Em segundo lugar, esse objeto é um fluxo de dados, portanto, deve ser fechado explicitamente usando o close()
método ou o uso declarado dentro de um try-with-resources
bloco.
7. Files.newInputStream
método
A partir do Java 5, as classes FileInputStream
e FileOutputStream
foram descontinuadas. Uma de suas desvantagens era que, quando os objetos dessas classes são criados, os arquivos são criados imediatamente no disco. E todas as exceções relacionadas à criação de arquivo podem ser lançadas.
Mais tarde, isso foi reconhecido como não sendo a melhor decisão. Assim, é recomendável usar os métodos da java.nio.Files
classe utilitária para criar objetos de arquivo.
Aqui está uma comparação entre a abordagem antiga e a nova abordagem para criar arquivos:
Antes |
---|
|
Depois |
|
E há uma substituição semelhante para FileOutputStream
:
Antes |
---|
|
Depois |
|
GO TO FULL VERSION