Capítulo 10
Sistema de Arquivos
 Introdução
 Acessando
o sistema de arquivos
 A classe java.io.File
2
Introdução

O pacote java.io
 Através do pacote java.io podemos utilizar
a classe File para acessar e manipular
arquivos e diretórios do sistema de
arquivos.
3
Acessando o Sistema de Arquivos

A classe java.io.File
 Uma instância da classe File representa um
arquivo ou diretório que pode estar presente
(ou não) em seu sistema de arquivos (HD,
pen-drive, CD, etc)
4
A classe java.io.File

Construtor File(String pathname)
 Podemos obter uma instância da classe File
utilizando o caminho do arquivo ou diretório
desejado:
File doc = new File(“C:\\documentos\\doc.txt”);
File img = new File(“E:\\imagens\\foto5.jpg”);
File pasta = new File(“C:\\Meus Documentos”);
File arq = new File(“config.txt”);
Caminho relativo ao diretório
atual da aplicação
5
A classe java.io.File

Construtor File(File folder, String filename)
 Outra forma de instanciarmos a classe File é
através do diretório que contém o arquivo
desejado:
File pasta = new File(“C:\\Meus Documentos”);
File arquivo = new File(pasta, “config.txt”);
6
A classe java.io.File

boolean exists()
 Verifica se a instância está apontando para um arquivo ou
diretório já existente.

boolean isFile()
 Verifica se a instância está apontando para um arquivo.

boolean isDirectory()
 Verifica se a instância está apontando para um diretório.

boolean isHidden()
 Verifica se a instância está apontando para um arquivo ou
diretório existente e que tenha a propriedade “arquivo
oculto” selecionada.
7
A classe java.io.File
File temp = new File(“C:\\Documentos\\imagens\\temp”);
if (!temp.exists()) {
System.out.println(“Arquivo ou pasta não encontrado”);
} else if (temp.isFile()) {
System.out.println(“Arquivo temp encontrado”);
} else if (temp.isDirectory()) {
System.out.println(“Diretório temp encontrado”);
}
if (temp.isHidden()) {
System.out.println(“Temp está oculto”);
}
8
A classe java.io.File

boolean delete()
 Tenta excluir o arquivo ou diretório, retornando
true caso tiver sucesso.
File temp = new File(“C:\\Documentos\\foto5.jpg”);
boolean ok = temp.delete();
if (ok) {
System.out.println(“Arquivo excluído com sucesso.”);
}
9
A classe java.io.File

boolean renameTo(File dest)
 Tenta mover e/ou renomear o arquivo ou
diretório, retornando true caso tiver sucesso.
File origem = new File(“C:\\Documentos\\foto5.jpg”);
File destino = new File(“E:\\fotos\\carnaval.jpg”);
boolean ok = origem.renameTo(destino);
if (ok) {
System.out.println(“Arquivo movido com sucesso.”);
}
10
A classe java.io.File

boolean createNewFile()
 Tenta criar um arquivo vazio, retornando true
caso tiver sucesso.
File novo = new File(“C:\\Documentos\\carta.txt”);
boolean ok = novo.createNewFile();
if (ok) {
System.out.println(“Arquivo criado com sucesso.”);
}
11
A classe java.io.File

boolean mkdir()
 Tenta criar um diretório, retornando true caso
tiver sucesso.
File novo = new File(“C:\\Documentos\\planilhas”);
boolean ok = novo.mkdir();
if (ok) {
System.out.println(“Diretório criado com sucesso.”);
}
12
A classe java.io.File

boolean mkdirs()
 Tenta criar um diretório e seus superdiretórios em
cascata, retornando true caso tiver sucesso.
File novo = new File(“E:\\Particular\\Docs\\Planilhas”);
boolean ok = novo.mkdirs();
if (ok) {
System.out.println(“Diretório criado com sucesso.”);
}
13
A classe java.io.File

String getPath()
 Retorna o caminho completo do arquivo ou
diretório.
File arquivo = new File(“C:\\Documentos\\Planilhas\\plan1.xls”);
System.out.println(arquivo.getPath());
C:\Documentos\Planilhas\plan1.xls
14
A classe java.io.File

String getName()
 Retorna o nome do arquivo ou diretório.
File arquivo = new File(“C:\\Documentos\\Planilhas\\plan1.xls”);
System.out.println(arquivo.getName());
plan1.xls
15
A classe java.io.File

File getParentFile()
 Retorna uma referência ao diretório onde o
arquivo ou diretório se encontra.
File arquivo = new File(“C:\\Documentos\\Planilhas\\plan1.xls”);
File pasta = arquivo.getParentFile();
System.out.println(pasta.getPath());
C:\Documentos\Planilhas
16
A classe java.io.File

File[] listFiles()
 Retorna um array contendo referências de todos
os arquivos e subdiretórios contidos no diretório
especificado.
 Caso o item especificado não exista ou não seja
um diretório, este método retorna null.
17
A classe java.io.File
File pasta = new File(“C:\\Meus Documentos”);
File[] arquivoArray = pasta.listFiles();
System.out.println(arquivoArray.length +
“ itens encontrados”);
for (File arquivo : arquivoArray) {
System.out.println(arquivo.getName());
}
18
A classe java.io.File

long length()
 Retorna o tamanho (em bytes) do arquivo
especificado.
File arquivo = new File(“C:\\Documentos\\Planilhas\\plan1.xls”);
System.out.printf(“Tamanho do arquivo: %d bytes”,
arquivo.length());
Tamanho do arquivo: 39936 bytes
19
A classe java.io.File

long lastModified()
 Obtem um número sequencial referente à data
da última modificação sobre o arquivo ou
diretório.

boolean setLastModified(long time)
 Assinala a data da última modificação sobre o
arquivo.
Utilize a classe java.util.Date para processar estas informações.
20
A classe java.io.File
/* Obtém o instante da última modificação */
File arquivo = new File(“C:\\Documentos\\curriculo.doc”);
long dataLong = arquivo.lastModified();
/* Converte para data. */
Date data = new Date(dataLong);
/* Prepara o formato de exibição da data. */
SimpleDateFormat mascara =
new SimpleDateFormat(“HH:mm:ss”);
System.out.println(“Data da última modificação: ”
+ mascara.format(data));
21
A classe java.io.File

boolean canWrite()
 Verifica se o arquivo possui permissão para escrita.

boolean setWritable(boolean writable)
 Assinala (true) ou revoga (false) a permissão para escrita
no arquivo somente ao proprietário e retorna true ou
false informando se a operação foi bem sucedida.

boolean setWritable( boolean writable,
boolean ownerOnly)
 Quando o segundo parâmetro é false, este método
assinala ou revoga a permissão para escrita no arquivo a
todos os usuários do sistema operacional.
 Quando o segundo parâmetro é true, assinala ou revoga
somente para o proprietário do arquivo.
22
A classe java.io.File
File arquivo = new File(“C:\\Documentos\\curriculo.doc”);
if (arquivo.canWrite()) {
System.out.println(“O arquivo pode ser editado.”);
} else {
System.out.println(“O arquivo não pode ser editado.”);
}
23
A classe java.io.File
File arquivo = new File(“C:\\Documentos\\curriculo.doc”);
boolean result = arquivo.setWritable(true);
if (result) {
System.out.println(“Permissão de escrita concedida ”
+ “ao proprietário do arquivo.”);
} else {
System.out.println(“Não foi possível conceder ”
+ “permissão de escrita ao proprietário ”
+ “do arquivo.”);
}
24
A classe java.io.File
File arquivo = new File(“C:\\Documentos\\curriculo.doc”);
boolean result = arquivo.setWritable(true, false);
if (result) {
System.out.println(“Permissão de escrita concedida ”
+ “a todos os usuários.”);
} else {
System.out.println(“Não foi possível conceder ”
+ “permissão de escrita a todos os usuários.”);
}
25
A classe java.io.File

boolean canRead()
 Verifica se o arquivo possui permissão para leitura.

boolean setReadable(boolean readable)
 Assinala (true) ou revoga (false) a permissão para leitura
no arquivo somente ao proprietário e retorna true ou false
informando se a operação foi bem sucedida.

boolean setReadable( boolean readable,
boolean ownerOnly)
 Quando o segundo parâmetro é false, este método
assinala ou revoga a permissão para leitura no arquivo a
todos os usuários do sistema operacional.
 Quando o segundo parâmetro é true, assinala ou revoga
somente para o proprietário do arquivo.
26
A classe java.io.File

boolean canExecute()
 Verifica se o arquivo possui permissão para execução.

boolean setExecutable(boolean executable)
 Assinala (true) ou revoga (false) a permissão para
excução no arquivo somente ao proprietário e retorna true
ou false informando se a operação foi bem sucedida.

boolean setExecutable( boolean executable,
boolean ownerOnly)
 Quando o segundo parâmetro é false, este método
assinala ou revoga a permissão para execução no
arquivo a todos os usuários do sistema operacional.
 Quando o segundo parâmetro é true, assinala ou revoga
somente para o proprietário do arquivo.
27
Exercício

Neste exercício utilizaremos a classe
java.io.File para separar um conjunto de
arquivos conforme seus tipos.
28
Exercício (Continuação)
1.
Descompacte o arquivo “documentos.zip” fornecido
pelo instrutor para algum diretório de seu HD. Isto
deverá gerar um diretório chamado “documentos”.
2.
Crie uma nova aplicação java, um package
br.com.impacta.file e neste, uma classe ExercicioFile
que deverá criar 3 subdiretórios em “documentos”:
 imagens
 mp3
 pdf
3.
... e em seguida deverá varrer o diretório “documentos”
movendo cada arquivo para um dos diretórios acima
conforme sua extensão.
29
Exercício (Fim)

Após executar a sua aplicação os arquivos
deverão estar separados da seguinte forma:
documentos
imagens
documentos
xxx.jpg
xxx.jpg
xxx.jpg
xxx.mp3
mp3
xxx.jpg
xxx.mp3
xxx.pdf
xxx.mp3
xxx.mp3
pdf
xxx.pdf
30
Download

A classe java.io.File