Como trabalhar com a Classe Java Scanner acessando arquivos

Como trabalhar com a Classe Java Scanner acessando arquivos

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Como trabalhar com a Classe Java Scanner acessando arquivos


Olá Amigos,

Hoje iremos utilizar a classe Java Scanner. A classe Scanner quebra a entrada de dados por tokens (símbolos) usando um delimitador, que por padrão corresponde a espaços em branco.
As partes resultantes podem então ser convertidas em valores de tipos diferentes como String, Integer, Double entre outros. Essa entrada de dados pode ser realiza de diversas maneiras:
arquivos, teclado, acesso à rede via Socket ou até mesmo utilizando texto puro através de String.

Trabalharemos com um exemplo de um arquivo do IBGE – Instituo Brasileiro de Geografia e Estatísticas que traz os dados referentes à população do estado do Rio de Janeiro.
No final deste artigo disponibilizaremos links com mais informações sobre o assunto.

Java Scanner

1. Criando o projeto

Crie um projeto onde adicionaremos uma classe com o código responsável por acessar o arquivo de dados do IBGE disponível neste link

Ao abrir o arquivo você percebe que há uma divisão entre os valores por “,” (vírgula) ou “;” (ponto e vírgula). Esse é o padrão mantido pela “ RFC 4180

Veja o conteúdo do nosso arquivo:

1
2
3
4
5
6
7
8
Municípios;Código;Gentílico;População 2010;área da unidade territorial (km2)
Angra dos Reis;3300100;angrense;169.511;825,09
Aperibé;3300159;aperibeense;10.213;94,64
Araruama;3300209;araruamense;112.008;638,02
Areal;3300225;arealense;11.423;110,92
Armação dos B£zios;3300233;buziano;27.560;70,28
Arraial do Cabo;3300258;cabista;27.715;160,29
Barra do Piraí;3300308;barrense;94.778;578,97

Observe que temos diversos campos “Municípios;Código;Gentílico;População 2010;área da unidade territorial (km2)” o separador é sempre o “;”. Neste exemplo não é possível utilizar “,” como separador, pois o campo “área da unidade territorial (km2)” possui “,” em seus valores.

2. Código fonte

Agora é hora de criar a classe que acessará o nosso arquivo e fará a leitura dos dados. Crie uma classe chamada “ScannerFile” e adicione o código abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package br.com.feltex.jse.io;
 
import java.io.File;
import java.util.Scanner;
 
public class ScannerFile {
 
	public static void main(String[] args) {
		System.out.println("Inicio ScannerFile");
 
		// Informa em qual pasta está o arquivo de origem dos dados
		String path = "D:/Temp/";
		try {
			//Cria um objeto File com apontamento para o arquivo
			File arquivo = new File(path + "MapaMunicipios-RJ.csv");
 
			//Defini um objeto Scanner que manipulará os dados
			Scanner scanner = new Scanner(arquivo);
			// Informa qual o separador do arquivo,
			// neste caso será o "\n" que é a quebra de linha
			scanner.useDelimiter("\n");
 
			// Enquanto houver linha no arquivo 
			// este bloco de código será executado
			while (scanner.hasNext()) {
				//Atribui uma linha por vez para a variável "linha"
				String linha = scanner.next();
 
				//Cria um vetor com as posições da linha
				// 0 = Municípios;
				// 1- Código;
				// 2 - Gentílico;
				// 3 - População 2010;
				// 4 - Area da unidade territorial (km2)
				String[] campos = linha.split(";");
 
				//Imprime os dados da Cidade e da população
				System.out.println("Cidade: " + campos[0] + " População: "
						+ campos[3]);
			}
			scanner.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("Fim ScannerFile");
	}
}

3. Execução do projeto

Pronto. Com isso o nosso exemplo pode ser executado e terá o resultado como o seguinte:

1
2
3
4
5
6
7
8
9
10
11
12
13
Inicio ScannerFile
Cidade: Municípios População: População 2010
Cidade: Angra dos Reis População: 169.511
Cidade: Aperibé População: 10.213
Cidade: Araruama População: 112.008
....
....
...
Cidade: Valença População: 71.843
Cidade: Varre-Sai População: 9.475
Cidade: Vassouras População: 34.410
Cidade: Volta Redonda População: 257.803
Fim ScannerFile

4. Conclusão


Simples assim. Código simples e prático. É importante saber que a Classe Scanner nos ajuda a realizar leitura de diversas formas. Exitem os métodos: nextInt(), nextBoolean() e nextDouble()
que já convertem o valor no formato desejado Integer, Boolean e Double respectivamente.

Links relacionados


Manipulação de Arquivos em java

Classe Scanner

Não deixe de curtir este post nas redes sociais. Dê a sua contribuição social e ajude o autor:

Deixe um comentário