Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#34 Exception Handling - Leitura e processamento de arquivo #77

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Exception Handling/Leitura e Processamento de arquivo/Color.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Rosa
Azul
Verde
Marrom
Cinza
Dourado
Vermelho
Branco
Preto

Roxo
Amarelo
26 changes: 26 additions & 0 deletions Exception Handling/Leitura e Processamento de arquivo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Leitura e processamento de arquivo

## Introdução
Para leitura e processamento de arquivo em Java se pode utilizar as classes *FileReader* e a *BufferedReader*.

A classe *FileReader* é um subtipo da classe *Reader* utilizada para leitura de arquivos que contêm texto. Caso algo não ocorra bem, ela lança a exception *FileNotFoundException*.

A classe *BufferedReader* lê o arquivo de forma eficiente. Na construção dessa classe é preciso passar uma classe tipo Reader. A exceção lançada por essa classe é a *IOException*.

O *try with resources* é uma forma de capturar exceções garantindo que os recursos utilizados por algumas classes, como as classes FileReader e BufferedReader, sejam liberados após a execução do programa ou falha.

## Funcionamento do programa
1. Dado que exista o arquivo Color.tx no diretório raiz do projeto
2. Ao executar a classe main, o caminho do arquivo existente é montado
3. Com esse caminho é feito a leitura do conteúdo do arquivo com o auxilio das classes FileReader e BufferedReader dentro de um try with resources
4. Caso não seja lançadas nenhuma exceção do tipo IOException
5. O conteúdo do arquivo é populado em uma Lista
6. A Lista é ordernada por ordem alfabética e exibida no console.

## Links auxiliares

* [Class BufferedReader](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html)
* [Class FileReader](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileReader.html)
* [How to Read a File in Java](https://www.baeldung.com/reading-file-in-java)
* [Class IOException](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html)
* [The try-with-resources Statement](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

public class Main {

public static void main(String[] args){
File file = new File("");
String path = file.getAbsolutePath().concat("/Exception Handling/Leitura e Processamento de arquivo/Color.txt");

List<String> data = readFileReader(path);

Collections.sort(data);
data.forEach(System.out::println);
}

public static List<String> readFileReader(String pathAbs) {
List<String> data = new ArrayList<>();
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(pathAbs))){
String line;
while(Objects.nonNull(line = bufferedReader.readLine())) {
data.add(line);
}
} catch (FileNotFoundException e){
System.out.println("Arquivo não encontrado, verifique se ele existe!");
} catch (IOException e){
System.out.println(e.getMessage());
}
return data;
}
isdrchagas marked this conversation as resolved.
Show resolved Hide resolved
}
11 changes: 8 additions & 3 deletions java-trainning.iml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/Design Patterns/Strategy Pattern/com.strategy.java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Design Patterns/Builder/com.builder.java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Exception Handling/Encadeamento de Excecoes/com.encadeamento.excecoes.java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Design Patterns/Strategy Pattern/com.strategy.java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Design Patterns/Builder/com.builder.java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Exception Handling/Encadeamento de Excecoes/com.encadeamento.excecoes.java" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="Bubble Sort Algorithm" />
<orderEntry type="module" module-name="Design Patterns" />
<orderEntry type="module" module-name="Encadeamento de Excecoes" />
<orderEntry type="module" module-name="Custom Exception" />
<orderEntry type="module" module-name="Leitura e Processamento de arquivo" />
</component>
</module>