package br.com.nick.javaIO.teste;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Locale;
import java.util.Scanner;
public class TesteScanner {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(new File("contas.csv"), StandardCharsets.UTF_8);
while (scanner.hasNextLine()) {
String linha = scanner.nextLine();
//'linha' passa a ser a proxima linha do arquivo a ser lida
Scanner linhaScanner = new Scanner(linha);
//novo scanner eh criado para ler cada linha individaulmente
linhaScanner.useLocale(Locale.US); //necessario para correta compilcao do saldo uma vez que este precisa saber como deve interpretar o valor do arquivo
linhaScanner.useDelimiter(",");
//delimiter recebe como parametro caracter que se deseja tirar ao analisar a linha, isto eh, estamos falando oq delimita nosso 'next' (aquilo que queremos analisar)
String tipoConta = linhaScanner.next(); //next padrao para ler a proxima string a partir da linha da iteracao atual
int agencia = linhaScanner.nextInt(); //next feito para numeros inteiros, importante pra facilitar posterior formatacao
int numero = linhaScanner.nextInt();
String titular = linhaScanner.next();
double saldo = linhaScanner.nextDouble(); //next feito para numeros flutuantes, importante pra facilitar posterior formatacao
System.out.format(new Locale("pt", "BR"), "%s; %04d; %02d; %1s: %05.2f%n", tipoConta, agencia, numero, titular, saldo);
//new Locale usado para avisar como deve formatar a saida
//metodo format recebe parametros de regiao e formatacao para dados lidos a partir de um scanner
//a partir da % eh possivel formatar diversos tipos para a saida de dados
linhaScanner.close();
}
scanner.close();
}
}