Capítulo 10. Sistema de Arquivos Introdução Acessando o sistema de arquivos A classe...
Transcript of Capítulo 10. Sistema de Arquivos Introdução Acessando o sistema de arquivos A classe...
Stream – Fluxo I/OSistema de Arquivos
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”);
5
Caminho relativo ao diretório atual da aplicação
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.FileFile 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.FileFile 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.FileFile 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:
30
xxx.jpg
xxx.mp3
xxx.jpg
xxx.pdf
xxx.mp3
xxx.jpg
xxx.jpg
xxx.mp3
xxx.mp3
xxx.pdf
imagens
mp3
documentos
documentos