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.
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
Deixe um comentário
Você precisa fazer o login para publicar um comentário.