Hoje iremos utilizar a classe Java Scanner. A classe Scanner quebra a entrada de dados por tokens (s\u00edmbolos) usando um delimitador, que por padr\u00e3o corresponde a espa\u00e7os em branco.
\nAs partes resultantes podem ent\u00e3o ser convertidas em valores de tipos diferentes como String, Integer, Double entre outros. Essa entrada de dados pode ser realiza de diversas maneiras:
\narquivos, teclado, acesso \u00e0 rede via Socket ou at\u00e9 mesmo utilizando texto puro atrav\u00e9s de String. <\/p>\n
Trabalharemos com um exemplo de um arquivo do IBGE – Instituo Brasileiro de Geografia e Estat\u00edsticas que traz os dados referentes \u00e0 popula\u00e7\u00e3o do estado do Rio de Janeiro.
\nNo final deste artigo disponibilizaremos links com mais informa\u00e7\u00f5es sobre o assunto.<\/p>\n
<\/p>\n
<\/p>\n
Crie um projeto onde adicionaremos uma classe com o c\u00f3digo respons\u00e1vel por acessar o arquivo de dados do IBGE dispon\u00edvel neste link<\/a><\/p>\n Ao abrir o arquivo voc\u00ea percebe que h\u00e1 uma divis\u00e3o entre os valores por “,” (v\u00edrgula) ou “;” (ponto e v\u00edrgula). Esse \u00e9 o padr\u00e3o mantido pela “ RFC 4180<\/a><\/p>\n Veja o conte\u00fado do nosso arquivo:<\/p>\n Observe que temos diversos campos “Munic\u00edpios;C\u00f3digo;Gent\u00edlico;Popula\u00e7\u00e3o 2010;\u00e1rea da unidade territorial (km2)” o separador \u00e9 sempre o “;”. Neste exemplo n\u00e3o \u00e9 poss\u00edvel utilizar “,” como separador, pois o campo “\u00e1rea da unidade territorial (km2)” possui “,” em seus valores.<\/p>\n Agora \u00e9 hora de criar a classe que acessar\u00e1 o nosso arquivo e far\u00e1 a leitura dos dados. Crie uma classe chamada “ScannerFile” e adicione o c\u00f3digo abaixo.<\/p>\n Pronto. Com isso o nosso exemplo pode ser executado e ter\u00e1 o resultado como o seguinte: <\/p>\n\r\nMunic\u00edpios;C\u00f3digo;Gent\u00edlico;Popula\u00e7\u00e3o 2010;\u00e1rea da unidade territorial (km2)\r\nAngra dos Reis;3300100;angrense;169.511;825,09\r\nAperib\u00e9;3300159;aperibeense;10.213;94,64\r\nAraruama;3300209;araruamense;112.008;638,02\r\nAreal;3300225;arealense;11.423;110,92\r\nArma\u00e7\u00e3o dos B\u00a3zios;3300233;buziano;27.560;70,28\r\nArraial do Cabo;3300258;cabista;27.715;160,29\r\nBarra do Pira\u00ed;3300308;barrense;94.778;578,97\r\n<\/pre>\n
2. C\u00f3digo fonte<\/H2><\/p>\n
\r\npackage br.com.feltex.jse.io;\r\n\r\nimport java.io.File;\r\nimport java.util.Scanner;\r\n\r\npublic class ScannerFile {\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\tSystem.out.println(\"Inicio ScannerFile\");\r\n\r\n\t\t\/\/ Informa em qual pasta est\u00e1 o arquivo de origem dos dados\r\n\t\tString path = \"D:\/Temp\/\";\r\n\t\ttry {\r\n\t\t\t\/\/Cria um objeto File com apontamento para o arquivo\r\n\t\t\tFile arquivo = new File(path + \"MapaMunicipios-RJ.csv\");\r\n\r\n\t\t\t\/\/Defini um objeto Scanner que manipular\u00e1 os dados\r\n\t\t\tScanner scanner = new Scanner(arquivo);\r\n\t\t\t\/\/ Informa qual o separador do arquivo,\r\n\t\t\t\/\/ neste caso ser\u00e1 o \"\\n\" que \u00e9 a quebra de linha\r\n\t\t\tscanner.useDelimiter(\"\\n\");\r\n\r\n\t\t\t\/\/ Enquanto houver linha no arquivo \r\n\t\t\t\/\/ este bloco de c\u00f3digo ser\u00e1 executado\r\n\t\t\twhile (scanner.hasNext()) {\r\n\t\t\t\t\/\/Atribui uma linha por vez para a vari\u00e1vel \"linha\"\r\n\t\t\t\tString linha = scanner.next();\r\n\t\t\t\t\r\n\t\t\t\t\/\/Cria um vetor com as posi\u00e7\u00f5es da linha\r\n\t\t\t\t\/\/ 0 = Munic\u00edpios;\r\n\t\t\t\t\/\/ 1- C\u00f3digo;\r\n\t\t\t\t\/\/ 2 - Gent\u00edlico;\r\n\t\t\t\t\/\/ 3 - Popula\u00e7\u00e3o 2010;\r\n\t\t\t\t\/\/ 4 - Area da unidade territorial (km2)\r\n\t\t\t\tString[] campos = linha.split(\";\");\r\n\t\t\t\t\r\n\t\t\t\t\/\/Imprime os dados da Cidade e da popula\u00e7\u00e3o\r\n\t\t\t\tSystem.out.println(\"Cidade: \" + campos[0] + \" Popula\u00e7\u00e3o: \"\r\n\t\t\t\t\t\t+ campos[3]);\r\n\t\t\t}\r\n\t\t\tscanner.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\tSystem.out.println(\"Fim ScannerFile\");\r\n\t}\r\n}\r\n<\/pre>\n
3. Execu\u00e7\u00e3o do projeto<\/H2><\/p>\n
\r\nInicio ScannerFile\r\nCidade: Munic\u00edpios Popula\u00e7\u00e3o: Popula\u00e7\u00e3o 2010\r\nCidade: Angra dos Reis Popula\u00e7\u00e3o: 169.511\r\nCidade: Aperib\u00e9 Popula\u00e7\u00e3o: 10.213\r\nCidade: Araruama Popula\u00e7\u00e3o: 112.008\r\n....\r\n....\r\n...\r\nCidade: Valen\u00e7a Popula\u00e7\u00e3o: 71.843\r\nCidade: Varre-Sai Popula\u00e7\u00e3o: 9.475\r\nCidade: Vassouras Popula\u00e7\u00e3o: 34.410\r\nCidade: Volta Redonda Popula\u00e7\u00e3o: 257.803\r\nFim ScannerFile\r\n<\/pre>\n
4. Conclus\u00e3o<\/H2>
\n Simples assim. C\u00f3digo simples e pr\u00e1tico. \u00c9 importante saber que a Classe Scanner nos ajuda a realizar leitura de diversas formas. Exitem os m\u00e9todos: nextInt(), nextBoolean() e nextDouble()
\nque j\u00e1 convertem o valor no formato desejado Integer, Boolean e Double respectivamente.<\/p>\nLinks relacionados<\/H2>
\nManipula\u00e7\u00e3o de Arquivos em java<\/a><\/p>\n