O documento discute arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
1) O documento descreve a linguagem de programação Java, sua história e conceitos principais.
2) Java foi originalmente criado para dispositivos embarcados e lançado publicamente em 1996.
3) A máquina virtual Java (JVM) executa os bytecodes gerados a partir do código Java, tornando a linguagem independente de plataforma.
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)Marcello Thiry
Este documento apresenta uma introdução à programação orientada a objetos em Java. Ele discute conceitos básicos como JRE e JDK, compilação e execução de programas Java, variáveis, tipos de dados, comentários e a classe System. O documento também fornece instruções sobre como configurar o ambiente de desenvolvimento Java.
O documento descreve uma aula sobre como criar um primeiro programa em Java para calcular a área total de uma casa. Ele explica como adicionar comentários informativos ao usuário, realizar cálculos matemáticos básicos e exibir os resultados usando comandos println. O documento também discute erros comuns em expressões aritméticas e a importância de agrupar operações dentro de parênteses.
Este documento fornece uma introdução aos principais recursos e funcionalidades do programa MATLAB, incluindo: (1) MATLAB como um ambiente de computação técnico-científica para desenvolvimento de sistemas sofisticados, (2) suas principais ferramentas como janelas, manipulação de matrizes e gráficos, e (3) exemplos básicos de uso de funções matemáticas e manipulação de vetores e matrizes.
O documento descreve um curso básico de MATLAB ministrado por Carlos Alberto Alves Varella e Keilla Boehler na Universidade Federal Rural do Rio de Janeiro. O curso apresenta os principais recursos e ferramentas do MATLAB, incluindo janelas, manipulação de matrizes e vetores, funções matemáticas, gráficos e plotagens.
Apresentações para as disciplinas de Orientação a Objetos (graduação)
java.io fluxos (streams) e arquivos em Java
Universidade do Vale do Itajaí
Univali
Incremental Tecnologia
O documento descreve o Maven, uma ferramenta para automatizar o processo de construção de aplicações Java. Ele explica a terminologia do Maven, como criar projetos Maven e gerenciar dependências. Além disso, aborda conceitos como ciclos de vida, POM, repositórios e perfis.
O documento discute a importância dos testes de unidade e apresenta a ferramenta JUnit para automatizar testes de unidade. Ele também fornece boas e más práticas para escrever testes de unidade e cobre tópicos como as anotações @Test, @Before, @After e @Rule do JUnit.
1) O documento descreve a linguagem de programação Java, sua história e conceitos principais.
2) Java foi originalmente criado para dispositivos embarcados e lançado publicamente em 1996.
3) A máquina virtual Java (JVM) executa os bytecodes gerados a partir do código Java, tornando a linguagem independente de plataforma.
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)Marcello Thiry
Este documento apresenta uma introdução à programação orientada a objetos em Java. Ele discute conceitos básicos como JRE e JDK, compilação e execução de programas Java, variáveis, tipos de dados, comentários e a classe System. O documento também fornece instruções sobre como configurar o ambiente de desenvolvimento Java.
O documento descreve uma aula sobre como criar um primeiro programa em Java para calcular a área total de uma casa. Ele explica como adicionar comentários informativos ao usuário, realizar cálculos matemáticos básicos e exibir os resultados usando comandos println. O documento também discute erros comuns em expressões aritméticas e a importância de agrupar operações dentro de parênteses.
Este documento fornece uma introdução aos principais recursos e funcionalidades do programa MATLAB, incluindo: (1) MATLAB como um ambiente de computação técnico-científica para desenvolvimento de sistemas sofisticados, (2) suas principais ferramentas como janelas, manipulação de matrizes e gráficos, e (3) exemplos básicos de uso de funções matemáticas e manipulação de vetores e matrizes.
O documento descreve um curso básico de MATLAB ministrado por Carlos Alberto Alves Varella e Keilla Boehler na Universidade Federal Rural do Rio de Janeiro. O curso apresenta os principais recursos e ferramentas do MATLAB, incluindo janelas, manipulação de matrizes e vetores, funções matemáticas, gráficos e plotagens.
Apresentações para as disciplinas de Orientação a Objetos (graduação)
java.io fluxos (streams) e arquivos em Java
Universidade do Vale do Itajaí
Univali
Incremental Tecnologia
O documento descreve o Maven, uma ferramenta para automatizar o processo de construção de aplicações Java. Ele explica a terminologia do Maven, como criar projetos Maven e gerenciar dependências. Além disso, aborda conceitos como ciclos de vida, POM, repositórios e perfis.
O documento discute a importância dos testes de unidade e apresenta a ferramenta JUnit para automatizar testes de unidade. Ele também fornece boas e más práticas para escrever testes de unidade e cobre tópicos como as anotações @Test, @Before, @After e @Rule do JUnit.
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
O documento resume 55 novas funcionalidades do Java 7, incluindo: literais binários e numéricos com underline, strings no switch, gerenciamento automático de recursos com try-with-resources, e novas APIs para concorrência, arquivos e números aleatórios.
O documento descreve as principais fases da programação Java, ambientes integrados de desenvolvimento (IDEs) e apresenta o JCreator como uma IDE leve e fácil de usar para iniciantes. Ele também demonstra um programa "Olá Mundo" simples usando classes, métodos e saída para console.
O documento apresenta os conceitos fundamentais sobre uso de streams de arquivos em Java, incluindo classes para abertura de conexões, leitura e gravação de objetos e caracteres. Exemplos mostram como serializar e desserializar objetos em arquivos e como ler e gravar texto usando streams. O leitor é incentivado a testar os exemplos e esclarecer dúvidas com o professor.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
O documento apresenta o mapeamento objeto-relacional usando Java Persistence API (JPA). Discute como mapear classes Java para tabelas de banco de dados e configurar a persistência. Demonstra como mapear entidades, configurar o contexto de persistência e realizar operações básicas.
O documento apresenta o mapeamento objeto-relacional usando Java Persistence API (JPA). Discute como mapear classes Java para tabelas de banco de dados e configurar a persistência. Demonstra como mapear entidades, configurar o contexto de persistência e realizar operações básicas como inserção, consulta e transações.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
Mais conteúdo relacionado
Semelhante a (ACH2001) Introdução à Programação - Aula 23
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
O documento resume 55 novas funcionalidades do Java 7, incluindo: literais binários e numéricos com underline, strings no switch, gerenciamento automático de recursos com try-with-resources, e novas APIs para concorrência, arquivos e números aleatórios.
O documento descreve as principais fases da programação Java, ambientes integrados de desenvolvimento (IDEs) e apresenta o JCreator como uma IDE leve e fácil de usar para iniciantes. Ele também demonstra um programa "Olá Mundo" simples usando classes, métodos e saída para console.
O documento apresenta os conceitos fundamentais sobre uso de streams de arquivos em Java, incluindo classes para abertura de conexões, leitura e gravação de objetos e caracteres. Exemplos mostram como serializar e desserializar objetos em arquivos e como ler e gravar texto usando streams. O leitor é incentivado a testar os exemplos e esclarecer dúvidas com o professor.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
O documento apresenta o mapeamento objeto-relacional usando Java Persistence API (JPA). Discute como mapear classes Java para tabelas de banco de dados e configurar a persistência. Demonstra como mapear entidades, configurar o contexto de persistência e realizar operações básicas.
O documento apresenta o mapeamento objeto-relacional usando Java Persistence API (JPA). Discute como mapear classes Java para tabelas de banco de dados e configurar a persistência. Demonstra como mapear entidades, configurar o contexto de persistência e realizar operações básicas como inserção, consulta e transações.
Semelhante a (ACH2001) Introdução à Programação - Aula 23 (7)
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
Atividade letra da música - Espalhe Amor, Anavitória.Mary Alvarenga
A música 'Espalhe Amor', interpretada pela cantora Anavitória é uma celebração do amor e de sua capacidade de transformar e conectar as pessoas. A letra sugere uma reflexão sobre como o amor, quando verdadeiramente compartilhado, pode ultrapassar barreiras alcançando outros corações e provocando mudanças positivas.
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
O Que é Um Ménage à Trois?
A sociedade contemporânea está passando por grandes mudanças comportamentais no âmbito da sexualidade humana, tendo inversão de valores indescritíveis, que assusta as famílias tradicionais instituídas na Palavra de Deus.
1. Aula 23 – Arquivos e Exce¸c˜oes
Norton Trevisan Roman
29 de maio de 2020
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 1 / 38
2. Arquivos
Nossos programas tˆem um grande inconveniente
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
3. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
4. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
5. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Guardando em arquivos
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
6. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Guardando em arquivos
Em java h´a v´arios modos
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
7. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Guardando em arquivos
Em java h´a v´arios modos
Um modo ´e criar um
objeto File
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
8. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Guardando em arquivos
Em java h´a v´arios modos
Um modo ´e criar um
objeto File
import java.io.File;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
9. Arquivos
Nossos programas tˆem um grande inconveniente
Dados de configura¸c˜ao, que deveriam ser preservados,
precisam ser fornecidos a cada vez que o programa roda
Como preserv´a-los
ent˜ao?
Guardando em arquivos
Em java h´a v´arios modos
Um modo ´e criar um
objeto File
import java.io.File;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
...
}
}
Instˆancias da classe java.io.File representam caminhos
(paths) para poss´ıveis locais no sistema de arquivos
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 2 / 38
10. Arquivos
Apenas representam
um arquivo ou
diret´orio
import java.io.File;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 3 / 38
11. Arquivos
Apenas representam
um arquivo ou
diret´orio
N˜ao necessariamente
o caminho existe
import java.io.File;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 3 / 38
12. Arquivos
Apenas representam
um arquivo ou
diret´orio
N˜ao necessariamente
o caminho existe
N˜ao criam o arquivo
ou diret´orio
import java.io.File;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 3 / 38
13. Arquivos
Mas isso s´o n˜ao basta
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
14. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,false);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
15. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
Mas onde?
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,false);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
16. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
Mas onde?
Ou no in´ıcio do arquivo
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,false);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
17. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
Mas onde?
Ou no in´ıcio do arquivo
Se j´a existir, ir´a
sobrescrever
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,false);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
18. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
Mas onde?
Ou no in´ıcio do arquivo
Se j´a existir, ir´a
sobrescrever
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Ou em seu final (append)
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
19. Arquivos
Mas isso s´o n˜ao basta
Temos que escrever o
string no arquivo
Mas onde?
Ou no in´ıcio do arquivo
Se j´a existir, ir´a
sobrescrever
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Ou em seu final (append)
Se n˜ao existir, ir´a criar
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 4 / 38
20. Arquivos
E...
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 5 / 38
21. Arquivos
E...
Sa´ıda
$javac Projeto.java
Projeto.java:52: unreported exception
java.io.IOException; must be caught
or declared to be thrown
FileWriter writer =
new FileWriter(arq,true);
^
1 error
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 5 / 38
22. Arquivos
E...
Sa´ıda
$javac Projeto.java
Projeto.java:52: unreported exception
java.io.IOException; must be caught
or declared to be thrown
FileWriter writer =
new FileWriter(arq,true);
^
1 error
import java.io.File;
import java.io.FileWriter;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Capturada ou declarada como lan¸cada?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 5 / 38
23. Exce¸c˜oes
Exce¸c˜oes s˜ao como o Java trata de seus erros.
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 6 / 38
24. Exce¸c˜oes
Exce¸c˜oes s˜ao como o Java trata de seus erros.
S˜ao objetos “lan¸cados” de um trecho de c´odigo
para fora do m´etodo em que ele est´a
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 6 / 38
25. Exce¸c˜oes
Exce¸c˜oes s˜ao como o Java trata de seus erros.
S˜ao objetos “lan¸cados” de um trecho de c´odigo
para fora do m´etodo em que ele est´a
M´etodos que fizeram chamada ao m´etodo
problem´atico podem
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 6 / 38
26. Exce¸c˜oes
Exce¸c˜oes s˜ao como o Java trata de seus erros.
S˜ao objetos “lan¸cados” de um trecho de c´odigo
para fora do m´etodo em que ele est´a
M´etodos que fizeram chamada ao m´etodo
problem´atico podem
Capturar e tratar a exce¸c˜ao
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 6 / 38
27. Exce¸c˜oes
Exce¸c˜oes s˜ao como o Java trata de seus erros.
S˜ao objetos “lan¸cados” de um trecho de c´odigo
para fora do m´etodo em que ele est´a
M´etodos que fizeram chamada ao m´etodo
problem´atico podem
Capturar e tratar a exce¸c˜ao
Pass´a-la adiante, para o m´etodo que os invocar
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 6 / 38
29. Exce¸c˜oes
Passando adiante a
batata quente:
Basta adicionar
throws (e o tipo da
exce¸c˜ao repassada) na
assinatura do m´etodo
em que ela pode
ocorrer
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 7 / 38
30. Exce¸c˜oes
Passando adiante a
batata quente:
Basta adicionar
throws (e o tipo da
exce¸c˜ao repassada) na
assinatura do m´etodo
em que ela pode
ocorrer
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome)
throws IOException {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 7 / 38
31. Exce¸c˜oes
Passando adiante a
batata quente:
Basta adicionar
throws (e o tipo da
exce¸c˜ao repassada) na
assinatura do m´etodo
em que ela pode
ocorrer
O m´etodo que chamar
gravaArq que se vire
para trat´a-la, ou passe
adiante
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome)
throws IOException {
File arq = new File(nome);
FileWriter writer =
new FileWriter(arq,true);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 7 / 38
32. Exce¸c˜oes
Capturando e Tratando
Exce¸c˜oes
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 8 / 38
33. Exce¸c˜oes
Capturando e Tratando
Exce¸c˜oes
Bloco Try – Catch –
Finally
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
}
catch(IOException ioe) {
}
finally {
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 8 / 38
34. Exce¸c˜oes
Capturando e Tratando
Exce¸c˜oes
Bloco Try – Catch –
Finally
Try: Testa o comando
que pode gerar a exce¸c˜ao
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
}
finally {
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 8 / 38
35. Exce¸c˜oes
Capturando e Tratando
Exce¸c˜oes
Bloco Try – Catch –
Finally
Try: Testa o comando
que pode gerar a exce¸c˜ao
Catch: Captura a
exce¸c˜ao, executando um
c´odigo que o programador
define para trat´a-la
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
finally {
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 8 / 38
36. Exce¸c˜oes
Finally (Opcional)
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
finally {// totalmente opcional
// Fazendo alguma limpeza
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 9 / 38
37. Exce¸c˜oes
Finally (Opcional)
O c´odigo dentro dele sempre
ser´a executado, mesmo se
houver uma exce¸c˜ao
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
finally {// totalmente opcional
// Fazendo alguma limpeza
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 9 / 38
38. Exce¸c˜oes
Finally (Opcional)
O c´odigo dentro dele sempre
ser´a executado, mesmo se
houver uma exce¸c˜ao
Se o c´odigo dentro do try
ou catch contiver um
return, o c´odigo dentro do
finally ser´a executado
antes do retorno do m´etodo
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
finally {// totalmente opcional
// Fazendo alguma limpeza
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 9 / 38
39. Exce¸c˜oes
E se nome for null?
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
40. Exce¸c˜oes
E se nome for null?
Ou testamos e retornamos
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
return(false);
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
41. Exce¸c˜oes
E se nome for null?
Ou testamos e retornamos
Ou lan¸camos uma exce¸c˜ao
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
return(false);
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
42. Exce¸c˜oes
E se nome for null?
Ou testamos e retornamos
Ou lan¸camos uma exce¸c˜ao
Como lan¸car?
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
return(false);
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
43. Exce¸c˜oes
E se nome for null?
Ou testamos e retornamos
Ou lan¸camos uma exce¸c˜ao
Como lan¸car?
Criando um objeto da
exce¸c˜ao desejada
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
IOException ex = new
IOException("Par^ametro nulo");
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
44. Exce¸c˜oes
E se nome for null?
Ou testamos e retornamos
Ou lan¸camos uma exce¸c˜ao
Como lan¸car?
Criando um objeto da
exce¸c˜ao desejada
E usando throw
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
IOException ex = new
IOException("Par^ametro nulo");
throw ex;
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 10 / 38
45. Exce¸c˜oes
Sa´ıda
$ javac Projeto.java
Projeto.java:60: unreported exception
java.io.IOException; must be caught or
declared to be thrown
throw ex;
^
1 error
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome) {
if (nome == null) {
IOException ex = new
IOException("Par^ametro nulo");
throw ex;
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 11 / 38
46. Exce¸c˜oes
Sa´ıda
$ javac Projeto.java
Projeto.java:60: unreported exception
java.io.IOException; must be caught or
declared to be thrown
throw ex;
^
1 error
Temos tamb´em que
declarar que o m´etodo
lan¸ca a exce¸c˜ao
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Projeto {
...
public boolean gravaArq(String nome)
throws IOException {
if (nome == null) {
IOException ex = new
IOException("Par^ametro nulo");
throw ex;
}
File arq = new File(nome);
try {
FileWriter writer =
new FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 11 / 38
47. Exce¸c˜oes
E o que acontece ao
fazermos:
class Projeto {
...
public static void main(String[] args)
{
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr,
null));
p.adicionaRes(new Residencia(cq,
null));
p.gravaArq(null);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 12 / 38
48. Exce¸c˜oes
E o que acontece ao
fazermos:
Sa´ıda
$ javac Projeto.java
Projeto.java:86: unreported
exception java.io.IOException;
must be caught or declared to
be thrown
p.gravaArq(null);
^
1 error
class Projeto {
...
public static void main(String[] args)
{
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr,
null));
p.adicionaRes(new Residencia(cq,
null));
p.gravaArq(null);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 12 / 38
49. Exce¸c˜oes
E o que acontece ao
fazermos:
Sa´ıda
$ javac Projeto.java
Projeto.java:86: unreported
exception java.io.IOException;
must be caught or declared to
be thrown
p.gravaArq(null);
^
1 error
Temos que adicionar o
bloco try ... catch
class Projeto {
...
public static void main(String[] args)
{
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr,
null));
p.adicionaRes(new Residencia(cq,
null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
System.out.println(
ioe.getMessage());
}
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 12 / 38
50. Exce¸c˜oes
E agora?
class Projeto {
...
public static void main(String[] args)
{
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr,
null));
p.adicionaRes(new Residencia(cq,
null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
System.out.println(
ioe.getMessage());
}
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 13 / 38
51. Exce¸c˜oes
E agora?
Sa´ıda
$ java Projeto
Par^ametro nulo
class Projeto {
...
public static void main(String[] args)
{
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr,
null));
p.adicionaRes(new Residencia(cq,
null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
System.out.println(
ioe.getMessage());
}
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 13 / 38
53. Exce¸c˜oes
E se IOException
n˜ao for a ideal?
E se n˜ao houver
ideal?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 14 / 38
54. Exce¸c˜oes
E se IOException
n˜ao for a ideal?
E se n˜ao houver
ideal?
Cria-se uma exce¸c˜ao,
subclasse de
Exception (ou de
qualquer outra
exce¸c˜ao)
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 14 / 38
55. Exce¸c˜oes
E se IOException
n˜ao for a ideal?
E se n˜ao houver
ideal?
Cria-se uma exce¸c˜ao,
subclasse de
Exception (ou de
qualquer outra
exce¸c˜ao)
class MinhaExcecao extends Exception
{
public MinhaExcecao() {}
public MinhaExcecao(String msg){
super(msg);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 14 / 38
57. Exce¸c˜oes
Usamos essa exce¸c˜ao
como qualquer outra
class Projeto {
...
public boolean gravaArq(String nome)
throws MinhaExcecao {
if (nome == null) {
MinhaExcecao ex = new
MinhaExcecao("Par^ametro nulo");
throw ex;
}
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,true);
}
catch(IOException ioe) {
return(false);
}
return(true);
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 15 / 38
58. Exce¸c˜oes – Pilha de Chamadas
O que acontece quando alguem lan¸ca uma exce¸c˜ao?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 16 / 38
59. Exce¸c˜oes – Pilha de Chamadas
O que acontece quando alguem lan¸ca uma exce¸c˜ao?
`A medida em que m´etodos
s˜ao chamados dentro de
outros m´etodos, o JRE
armazena todos eles em
uma estrutura chamada
Pilha de Chamadas
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 16 / 38
60. Exce¸c˜oes – Pilha de Chamadas
O que acontece quando alguem lan¸ca uma exce¸c˜ao?
`A medida em que m´etodos
s˜ao chamados dentro de
outros m´etodos, o JRE
armazena todos eles em
uma estrutura chamada
Pilha de Chamadas
Se um determinado
m´etodo lan¸ca uma
exce¸c˜ao, o JRE busca seu
tratamento na pilha, indo desde o m´etodo que chamou o
m´etodo que lan¸cou a exce¸c˜ao, at´e atingir main, se nenhum
m´etodo no caminho tratar da exce¸c˜ao.
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 16 / 38
61. Pilha de Chamadas
Chamada
Busca por tratamento da
Exce¸c˜ao
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 17 / 38
62. Arquivos
E como podemos ver
a pilha de execu¸c˜ao?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 18 / 38
63. Arquivos
E como podemos ver
a pilha de execu¸c˜ao?
printStackTrace
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 18 / 38
64. Arquivos
E como podemos ver
a pilha de execu¸c˜ao?
printStackTrace
A existˆencia de
m´ultiplas exce¸c˜oes
abre para a
possibilidade de
m´ultiplos blocos
catch.
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 18 / 38
65. Arquivos
Criamos um para cada
tipo de exce¸c˜ao
tratada
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (MinhaExcecao me) {
System.out.println(me.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 19 / 38
66. Arquivos
Criamos um para cada
tipo de exce¸c˜ao
tratada
Com c´odigo espec´ıfico
para cada exce¸c˜ao
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (MinhaExcecao me) {
System.out.println(me.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 19 / 38
67. Arquivos
Criamos um para cada
tipo de exce¸c˜ao
tratada
Com c´odigo espec´ıfico
para cada exce¸c˜ao
Nos permite tomar
decis˜oes diferentes
conforme o tipo de
erro encontrado.
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
try {
p.gravaArq(null);
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (MinhaExcecao me) {
System.out.println(me.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 19 / 38
68. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
69. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
70. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
71. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
72. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
73. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
74. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
int w = 10 / 0;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
75. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
int w = 10 / 0;
java.lang.ArithmeticException
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
76. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
int w = 10 / 0;
java.lang.ArithmeticException
class Aula23 {
public static void main(String[] args)
{
try {
int w = 10 / 0;
}
catch(Exception e) {
}
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
77. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
int w = 10 / 0;
java.lang.ArithmeticException
class Aula23 {
public static void main(String[] args)
{
try {
int w = 10 / 0;
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
78. Algumas Exce¸c˜oes
int x = Integer.parseInt("five");
java.lang.NumberFormatException
int[] y = {1, 3};
System.out.println(y[3]);
java.lang.ArrayIndexOutOfBoundsException
int[] z = {1, 3};
z[-1] = 2;
java.lang.ArrayIndexOutOfBoundsException
int w = 10 / 0;
java.lang.ArithmeticException
class Aula23 {
public static void main(String[] args)
{
try {
int w = 10 / 0;
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Sa´ıda
$ java Aula23
java.lang.ArithmeticException: / by zero
at Aula23.main(Aula23.java:5)
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 20 / 38
79. Por fim...
Assim como podemos capturar m´ultiplas exce¸c˜oes,
tamb´em podemos repass´a-las
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 21 / 38
80. Por fim...
Assim como podemos capturar m´ultiplas exce¸c˜oes,
tamb´em podemos repass´a-las
Ex:
public boolean gravaArq(String nome) throws
MinhaExcecao, IOException {...}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 21 / 38
81. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
82. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
83. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
84. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
85. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
86. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
N˜ao precisam ser capturadas ou propagadas
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
87. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
N˜ao precisam ser capturadas ou propagadas
Passam “despercebidas” pelo compilador
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
88. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
N˜ao precisam ser capturadas ou propagadas
Passam “despercebidas” pelo compilador
O programador s´o descobre que elas existem quando h´a um
erro que p´ara o programa
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
89. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
N˜ao precisam ser capturadas ou propagadas
Passam “despercebidas” pelo compilador
O programador s´o descobre que elas existem quando h´a um
erro que p´ara o programa
Estendem java.lang.RuntimeException
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
90. Checked × Unchecked
H´a dois tipos b´asicos de exce¸c˜ao
Checked:
Devem ser explicitamente capturadas ou propagadas
Estendem java.lang.Exception
Unchecked (ou Run-Time):
N˜ao precisam ser capturadas ou propagadas
Passam “despercebidas” pelo compilador
O programador s´o descobre que elas existem quando h´a um
erro que p´ara o programa
Estendem java.lang.RuntimeException
MUITO CUIDADO COM ESSAS!
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 22 / 38
91. Arquivos
Voltemos ao c´odigo.
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 23 / 38
92. Arquivos
Voltemos ao c´odigo.
Por simplicidade,
retornamos false
no caso de nome ==
null
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 23 / 38
93. Arquivos
Voltemos ao c´odigo.
Por simplicidade,
retornamos false
no caso de nome ==
null
O que isso faz?
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 23 / 38
94. Arquivos
Voltemos ao c´odigo.
Por simplicidade,
retornamos false
no caso de nome ==
null
O que isso faz?
Cria um arquivo de
nome nome
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 23 / 38
95. Arquivos
Voltemos ao c´odigo.
Por simplicidade,
retornamos false
no caso de nome ==
null
O que isso faz?
Cria um arquivo de
nome nome
Se j´a existir,
sobrescreve
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 23 / 38
96. Arquivos
Falta gravar as
informa¸c˜oes
relevantes l´a
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 24 / 38
97. Arquivos
Falta gravar as
informa¸c˜oes
relevantes l´a
No caso, a ´area da
casa e da piscina
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
No p = this.condominio.getCabeca();
while (p != null) {
Residencia r = p.getRes();
if (r.casa != null) {
writer.write("Casa:´Area:" +
r.casa.area()+"n");
}
if (r.piscina != null) {
writer.write("Piscina:´Area:" +
r.piscina.area()+"n");
}
p = p.getProx();
}
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 24 / 38
98. Arquivos
Falta gravar as
informa¸c˜oes
relevantes l´a
No caso, a ´area da
casa e da piscina
Repare nos n
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
No p = this.condominio.getCabeca();
while (p != null) {
Residencia r = p.getRes();
if (r.casa != null) {
writer.write("Casa:´Area:" +
r.casa.area()+"n");
}
if (r.piscina != null) {
writer.write("Piscina:´Area:" +
r.piscina.area()+"n");
}
p = p.getProx();
}
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 24 / 38
99. Arquivos
Falta gravar as
informa¸c˜oes
relevantes l´a
No caso, a ´area da
casa e da piscina
Repare nos n
E fechar o arquivo
(impedindo novas
grava¸c˜oes)
public boolean gravaArq(String nome) {
if (nome == null) return(false);
File arq = new File(nome);
try {
FileWriter writer = new
FileWriter(arq,false);
No p = this.condominio.getCabeca();
while (p != null) {
Residencia r = p.getRes();
if (r.casa != null) {
writer.write("Casa:´Area:" +
r.casa.area()+"n");
}
if (r.piscina != null) {
writer.write("Piscina:´Area:" +
r.piscina.area()+"n");
}
p = p.getProx();
}
writer.close();
}
catch(IOException ioe) { return(false); }
return(true);
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 24 / 38
100. Arquivos
E como usamos isso?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 25 / 38
101. Arquivos
E como usamos isso?
public static void main(String[] args) {
CasaRet cr = new CasaRet(10,5,1320);
CasaQuad cq = new CasaQuad(10,1523);
Projeto p = new Projeto();
p.adicionaRes(new Residencia(cr, null));
p.adicionaRes(new Residencia(cq, null));
if (!p.gravaArq("oba"))
System.out.println("Problema");
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 25 / 38
103. Arquivos
Vimos como
escrevemos em um
arquivo.
Mas, e como lemos de
um arquivo?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 26 / 38
104. Arquivos
Vimos como
escrevemos em um
arquivo.
Mas, e como lemos de
um arquivo?
Com Scanner
import java.util.Scanner;
import java.io.FileNotFoundException;
...
public static void main(String[] args) {
try {
File arq = new File("oba");
Scanner sc = new Scanner(arq);
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 26 / 38
105. Arquivos
Vimos como
escrevemos em um
arquivo.
Mas, e como lemos de
um arquivo?
Com Scanner
Teremos que capturar
exce¸c˜ao
import java.util.Scanner;
import java.io.FileNotFoundException;
...
public static void main(String[] args) {
try {
File arq = new File("oba");
Scanner sc = new Scanner(arq);
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 26 / 38
106. Arquivos
Scanner quebra os
s´ımbolos usando como
delimitador o espa¸co
import java.util.Scanner;
import java.io.FileNotFoundException;
...
public static void main(String[] args) {
try {
File arq = new File("oba");
Scanner sc = new Scanner(arq);
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 27 / 38
107. Arquivos
Scanner quebra os
s´ımbolos usando como
delimitador o espa¸co
E como ler a linha
inteira?
import java.util.Scanner;
import java.io.FileNotFoundException;
...
public static void main(String[] args) {
try {
File arq = new File("oba");
Scanner sc = new Scanner(arq);
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 27 / 38
108. Arquivos
Scanner quebra os
s´ımbolos usando como
delimitador o espa¸co
E como ler a linha
inteira?
Com nextLine()
import java.util.Scanner;
import java.io.FileNotFoundException;
...
public static void main(String[] args) {
try {
File arq = new File("oba");
Scanner sc = new Scanner(arq);
while (sc.hasNext()) {
System.out.println(sc.nextLine());
}
sc.close();
}
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 27 / 38
109. Arquivos – Um exemplo mais complexo
Encriptar o conte´udo
de um arquivo oba,
contendo:
teste1
teste2 teste3
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 28 / 38
110. Arquivos – Um exemplo mais complexo
Encriptar o conte´udo
de um arquivo oba,
contendo:
teste1
teste2 teste3
Como fazer?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 28 / 38
111. Arquivos – Um exemplo mais complexo
Encriptar o conte´udo
de um arquivo oba,
contendo:
teste1
teste2 teste3
Como fazer?
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class Encriptador {
public static void main(String[] args){
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 28 / 38
112. Arquivos – Um exemplo mais complexo
Encriptar o conte´udo
de um arquivo oba,
contendo:
teste1
teste2 teste3
Como fazer?
Usamos as classes
espec´ıficas para lidar com
bytes de dados
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class Encriptador {
public static void main(String[] args){
...
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 28 / 38
113. Arquivos – Um exemplo mais complexo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
114. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
115. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
116. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
read retorna -1 ao final do
arquivo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
117. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
read retorna -1 ao final do
arquivo
Encriptamos
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
118. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
read retorna -1 ao final do
arquivo
Encriptamos
Gravamos no novo arquivo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
119. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
read retorna -1 ao final do
arquivo
Encriptamos
Gravamos no novo arquivo
Apagamos o antigo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
120. Arquivos – Um exemplo mais complexo
Criamos um novo arquivo,
oba2
Lemos cada linha do
antigo
read retorna -1 ao final do
arquivo
Encriptamos
Gravamos no novo arquivo
Apagamos o antigo
Substituimos pelo novo
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 29 / 38
121. Arquivos – Um exemplo mais complexo
E como encriptamos?
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
122. Arquivos – Um exemplo mais complexo
E como encriptamos?
Da maneira mais simples:
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
123. Arquivos – Um exemplo mais complexo
E como encriptamos?
Da maneira mais simples:
Invertendo os bits do byte lido
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
124. Arquivos – Um exemplo mais complexo
E como encriptamos?
Da maneira mais simples:
Invertendo os bits do byte lido
˜ Corresponde a um n˜ao bit a bit
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
125. Arquivos – Um exemplo mais complexo
E como encriptamos?
Da maneira mais simples:
Invertendo os bits do byte lido
˜ Corresponde a um n˜ao bit a bit
Os bits da vari´avel s˜ao analisados individualmente
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
126. Arquivos – Um exemplo mais complexo
E como encriptamos?
Da maneira mais simples:
Invertendo os bits do byte lido
˜ Corresponde a um n˜ao bit a bit
Os bits da vari´avel s˜ao analisados individualmente
Bit 1 vira 0 e bit 0 vira 1
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 30 / 38
127. Arquivos – Um exemplo mais complexo
Ex:
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 31 / 38
128. Arquivos – Um exemplo mais complexo
Ex:
˜11001010 → 00110101
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 31 / 38
129. Arquivos – Um exemplo mais complexo
Ex:
˜11001010 → 00110101
˜00110101 → 11001010
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 31 / 38
130. Arquivos – Um exemplo mais complexo
Ex:
˜11001010 → 00110101
˜00110101 → 11001010
Essa caracter´ıstica (reversibilidade) ´e o que o torna
´util ao nosso prop´osito
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 31 / 38
131. Arquivos – Um exemplo mais complexo
E qual a sa´ıda de nosso
c´odigo?
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 32 / 38
132. Arquivos – Um exemplo mais complexo
E qual a sa´ıda de nosso
c´odigo?
Sa´ıda
$ cat oba
teste1
teste2 teste3
$ java Encriptador
$ cat oba
$ java Encriptador
$ cat oba
teste1
teste2 teste3
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 32 / 38
133. Arquivos – Um exemplo mais complexo
E qual a sa´ıda de nosso
c´odigo?
Sa´ıda
$ cat oba
teste1
teste2 teste3
$ java Encriptador
$ cat oba
$ java Encriptador
$ cat oba
teste1
teste2 teste3
Note que o mesmo
c´odigo que encripta,
tamb´em decripta
public static void main(String[] args) {
File arq = new File("oba");
File arq2 = new File("oba2");
try {
FileOutputStream writer = new
FileOutputStream(arq2,false);
FileInputStream reader =
new FileInputStream(arq);
int b;
while ((b = reader.read()) != -1) {
b = ~b;
writer.write(b);
}
writer.close();
reader.close();
arq.delete();
arq2.renameTo(arq);
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
}
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 32 / 38
134. Operadores Bit a Bit
Aplicam-se a inteiros (int, long, char, byte)
Operador A¸c˜ao Exemplo
not ~11001010
˜ inverte bits 00110101
and 11001010
& filtra bits & 01100110
01000010
or 11001010
| “liga” bits | 01100010
11101010
xor 11001010
ˆ ou exclusivo ^ 01100010
“desliga” bits 10101000
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 33 / 38
135. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
136. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
137. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V
V
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
138. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V
V F
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
139. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V F
V F
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
140. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V F
V F V
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
141. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V F
V F V
F
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
142. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V F
V F V
F V
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
143. Ou Exclusivo
Verdadeiro se ou uma das condi¸c˜oes ´e verdadeira ou
a outra ´e, nunca as duas ou nenhuma delas
XOr: Comando1 ser´a executado?
condi¸c˜ao2
condi¸c˜ao1
V F
V F V
F V F
if ((condi¸c~ao1 || condi¸c~ao2)
&&
!(condi¸c~ao1 && condi¸c~ao2))
comando1;
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 34 / 38
144. Arquivos
Aten¸c˜ao!
Nessa aula n˜ao discutimos sobre arquivos que
contˆem todo o leque de caracteres Unicode ou
mesmo todas as extens˜oes do ASCII. Focamos
apenas em arquivos ASCII “puros”.
Aqueles que, contudo, procuram esse tipo de
informa¸c˜ao, podem dar uma olhada na classe
java.io.OutputStreamWriter sobre como criar
um Writer levando em conta a codifica¸c˜ao dos
caracteres do arquivo.
Norton Trevisan Roman Aula 23 – Arquivos e Exce¸c˜oes 29 de maio de 2020 35 / 38