Cursos / Informática para Internet / Desenvolvimento Desktop / Aula

arrow_back Aula 13 - Arquivos – Lendo, Escrevendo e Criando - Parte 1

Apagando um Arquivo ou Diretório

Pode-se apagar arquivos, diretórios ou links. Com links simbólicos, apenas o link é apagado e não o arquivo cujo link aponta. Em se tratando de diretórios, o mesmo deve estar vazio, ou a operação falha.

A classe Files provê dois métodos de remoção. O delete(Path) apaga o arquivo ou dispara uma exceção se a operação falhar. Por exemplo, se o arquivo não existir, uma exceção NoSuchFileException é disparada. De qualquer forma, é possível capturar a exceção e saber por que a operação de remoção falhou, como mostra o trecho de código a seguir:

O método deleteIfExists(Path) também apaga o arquivo, mas, se o arquivo não existir, nenhuma exceção é disparada.

Copiando um Arquivo ou Diretório

Pode-se copiar um arquivo ou diretório através do método copy(Path, Path, CopyOption...). A cópia falha se o arquivo destino já existir, a menos que a opção REPLACE_EXISTING seja especificada.

Diretórios podem ser copiados, mas os arquivos dentro do diretório não o serão. Dessa forma, os novos diretórios serão vazios mesmo que os originais contenham arquivos.

Quando se copia um link simbólico, o arquivo apontado pelo link é copiado. Se a intenção for copiar o link em si e não o conteúdo do link, deve-se especificar a opção NOFOLLOW_LINKS ou REPLACE_EXISTING.

Esse método (copy(Path, Path, CopyOption...)) recebe parâmetros onde os seguintes argumentos são suportados:

  • REPLACE_EXISTING ― executa a cópia mesmo se o arquivo destino já existe.
  • COPY_ATTRIBUTES ― copia os atributos associados ao arquivo para o arquivo destino. Os atributos suportados dependem da plataforma e do sistema de arquivos, mas o atributo last-modified-time é suportado entre plataformas e é copiado ao arquivo destino.
  • NOFOLLOW_LINKS ― indica que links simbólicos não devem ser seguidos. Se o arquivo a ser copiado é um link, o próprio link será copiado (e não arquivo cujo link aponta).

O trecho de código a seguir mostra como o método copy deve ser utilizado:

Files.copy(source, target, REPLACE_EXISTING);

Onde os dois primeiros argumentos são o arquivo de origem e o de destino, respectivamente, ambos representados por objetos da classe Path. O terceiro argumento é um atributo que caracteriza a maneira como a operação vai ser realizada, nesse caso, executando a cópia mesmo que o arquivo de destino exista.

Para que esse método funcione com os atributos, é necessário importar o pacote java.nio.file.StandardCopyOption.*.

Versão 5.3 - Todos os Direitos reservados