Capítulo 10. Sistema de Arquivos Introdução Acessando o sistema de arquivos A classe...

30
Stream – Fluxo I/O Sistema de Arquivos Capítulo 10

Transcript of Capítulo 10. Sistema de Arquivos Introdução Acessando o sistema de arquivos A classe...

Page 1: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

Stream – Fluxo I/OSistema de Arquivos

Capítulo 10

Page 2: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

Sistema de Arquivos

Introdução Acessando o sistema de arquivos A classe java.io.File

2

Page 3: 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

Page 4: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 5: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 6: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 7: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 8: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 9: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 10: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 11: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 12: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 13: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 14: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 15: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 16: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 17: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 18: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 19: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 20: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 21: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 22: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 23: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 24: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 25: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 26: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 27: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 28: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

Exercício Neste exercício utilizaremos a classe

java.io.File para separar um conjunto de arquivos conforme seus tipos.

28

Page 29: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

Page 30: Capítulo 10. Sistema de Arquivos  Introdução  Acessando o sistema de arquivos  A classe java.io.File 2.

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

pdf

documentos

documentos