StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em...
Transcript of StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em...
![Page 1: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/1.jpg)
StreamStream de Arquivosde Arquivos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Prof. Bruno GomesProf. Bruno Gomes
[email protected]@ifrn.edu.br
![Page 2: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/2.jpg)
IntroduçãoIntrodução
• Arquivos são utilizados para armazenamento a longo prazo de dados, mesmo finalizando o programa que criou os dados
• Os dados armazenados em arquivos são • Os dados armazenados em arquivos são chamados de dados persistentes
• Java reconhece cada arquivo como um fluxo sequencial de bytes – Array de Bytes (Stream)
• Java abre um arquivo através da criação de um objeto e a associação de um fluxo de bytes a este objeto
![Page 3: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/3.jpg)
IntroduçãoIntrodução
![Page 4: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/4.jpg)
IntroduçãoIntrodução
• Processamento de arquivos é feito em programas java utilizando as classes do pacote java.io:
– FileInputStream (entrada baseada em bytes)
– FileOutPutStream (saída baseada em bytes)– FileOutPutStream (saída baseada em bytes)
– FileReader (Entrada baseada em caracteres)
– FileWriter (Saída baseada em caracteres)
• Arquivos são abertos criando-se objetos dessas classes de fluxo, que herdam de InputStream, OutPutStream, Reader e Writer
![Page 5: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/5.jpg)
Classe FileClasse File
• Representam caminhos (paths) para possíveis Arquivos ou Diretórios no SO
• Arquivos e diretórios
– Diretórios são arquivos especiais cujo conteúdo – Diretórios são arquivos especiais cujo conteúdo são outros arquivos
![Page 6: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/6.jpg)
Classe FileClasse File
• Métodos
– int length() - tamanho do arquivo em bytes
– boolean isFile() - verdadeiro se é arquivo
– boolean isDirectory() - verdadeiro se é diretório
– boolean canRead() - verdadeiro se tem permissão de – boolean canRead() - verdadeiro se tem permissão de leitura
– boolean canWrite() - verdadeiro se tem permissão de escrita
– String[] list()• Se o objeto for diretório retorna array de Strings como os nomes dos
arquivos desse diretório
• Se for um arquivo retorna null
![Page 7: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/7.jpg)
Classe FileClasse File
• Exemplo:
File file = new File("c:\\arquivos\\documento.txt");System.out.println(file.getAbsolutePath());System.out.println(file.getName());System.out.println(file.getName());System.out.println(file.getParent());System.out.println(file.getPath());System.out.println(file.getTotalSpace());System.out.println(file.getUsableSpace());System.out.println(file.lastModified());System.out.println(file.isFile());System.out.println(file.isDirectory());System.out.println(file.canExecute());
![Page 8: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/8.jpg)
Classe FileClasse File
• Exemplo:File file;String nomeArquivo = JOptionPane.showInputDialog(“Digite um arquivo ou diretório do computador");file = new File(nomeArquivo);file = new File(nomeArquivo);if (file.isDirectory()){
System.out.println("É um diretório");String [] arquivos = file.list();for(int i = 0 ; i < arquivos.length ; i++){
System.out.println(arquivos[i]);}
} else {System.out.println("É um arquivo");System.out.println("Tamanho: "+file.length());
}
![Page 9: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/9.jpg)
Byte StreamsByte Streams
• Programas usam streams de bytes paramanipular entradas e saídas de bytes de 8-bits.
• Todas as classes que manipulam stream de • Todas as classes que manipulam stream de bytes herdam de InputStream e OutputStream.
![Page 10: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/10.jpg)
Byte Byte StreamsStreams –– FileInputStreamFileInputStream e e FileOutputStreamFileOutputStream
public static void main(String[] args) throws IOException {FileInputStream in = null;FileOutputStream out = null;try {
in = new FileInputStream("documento1.txt");out = new FileOutputStream("documento2.txt");int c;while ((c = in.read()) != -1) {
out.write(c);}}
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
} finally {if (in != null) {
in.close();}if (out != null) {
out.close();}
}}
![Page 11: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/11.jpg)
Byte StreamsByte Streams
• Representação:
![Page 12: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/12.jpg)
InputStreamInputStream
• Declara métodos para ler bytes de uma determinada origem
• É a superclasse da maioria dos Streams de bytes de entrada em java.iobytes de entrada em java.io
• Métodos:
– int read(), int skip(byte[] buf), int avaliable(), void close();
![Page 13: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/13.jpg)
InputStreamInputStream
• Exemplo:
InputStream in = newFileInputStream("C:\\arquivos\\documento.txt");FileInputStream("C:\\arquivos\\documento.txt");int total = 0;while (in.read() != -1)
total++;System.out.println(total + " bytes");
![Page 14: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/14.jpg)
Sempre feche o StreamSempre feche o Stream
• Ao terminar de manipular um stream de bytes, sempre feche (close())
• Motivos:
– Esta operação pode provocar uma exceção– Esta operação pode provocar uma exceção
– Liberar recursos
• Portanto, escreva-a em um bloco finally
![Page 15: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/15.jpg)
Por que usar o Byte StreamsPor que usar o Byte Streams
• Devem ser usados apenas para as mais primitivas I/O
• Todos os outros tipos de fluxo são construídos sobre os fluxos de bytessobre os fluxos de bytes
![Page 16: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/16.jpg)
Character StreamsCharacter Streams
• Herdam de Reader e Writer
• Classes especializadas:
– FileReader e FileWriter
![Page 17: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/17.jpg)
Character StreamsCharacter Streamspublic static void main(String[] args) throws IOException {FileReader inputStream = null;
FileWriter outputStream = null;try {
inputStream = new FileReader("documento1.txt");outputStream = new FileWriter("documento2.txt");
int c;while ((c = inputStream.read()) != -1) {while ((c = inputStream.read()) != -1) {
outputStream.write(c);}
} finally {if (inputStream != null) {
inputStream.close();}if (outputStream != null) {
outputStream.close();}
}}
![Page 18: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/18.jpg)
Leitura Linha a LinhaLeitura Linha a Linha
• Não é comum ler caractere a caractere
• Utiliza a leitura linha a linha
• Utilização de Buffer
• Classes BufferedReader e PrintWriter
• A linha pode ser terminada por:
– "\r\n”
– "\r”
– "\n"
![Page 19: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/19.jpg)
Leitura Linha a LinhaLeitura Linha a Linha
public static void main(String[] args) throws IOException {BufferedReader inputStream = null;
PrintWriter outputStream = null;try {
inputStream = new BufferedReader(new FileReader("documento1.txt"));outputStream = new PrintWriter(new FileWriter("documento2.txt"));
String l;String l;while ((l = inputStream.readLine()) != null) {
outputStream.println(l);}
} finally {if (inputStream != null) {
inputStream.close();}if (outputStream != null) {
outputStream.close();}
}}
![Page 20: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/20.jpg)
Utilizando ScannerUtilizando Scanner
• Scanner são úteis para “quebrar” entradas em tokens e “traduzi-los” de forma individual
• Le InputStreams
![Page 21: StreamStreamde Arquivos de Arquivos - Professor Baesse · • Processamento de arquivos é feito em programas javautilizando as classes do pacote java.io: – FileInputStream (entrada](https://reader033.fdocument.pub/reader033/viewer/2022050522/5fa544d9107f3c7cb8231e80/html5/thumbnails/21.jpg)
Utilizando ScannerUtilizando Scanner
• Exemplo:
public static void main(String[] args) throws IOException {Scanner s = null;
try {s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));
while (s.hasNext()) {System.out.println(s.next());
}} finally {
if (s != null) {s.close();
}}
}