GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] Leitura de arquivo texto com delimitador

Olá Pessoal,

Estou precisando ler o arquivo abaixo e estou tentando utilizar a função scanner. Consigo ler o aquivo na boa, mas ele não esta respeitando o delimitador que é o “|”. A separação esta ficando em cada célula. O que estou fazendo de errado?

Obrigado.

Conteúdo do arquivo.

|0110|1|2|1||
|0111|9211264,42|116727,31|0,00|0,00|9327991,73|

        try {
            Scanner scanner = new Scanner(new File("C:/Projetos/tst.txt"));
            scanner.useDelimiter("|"); 
            while (scanner.hasNext()) {
                System.out.println(scanner.next());
            }
            scanner.close(); 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

Tenta fazer um teste retirando o delimitador “|” do ínicio e do final de cada linha.

Olá,
Você tem que escapar a barra, use assim : scanner.useDelimiter("\|");

abraço!

Blz mmaico,

Era isso mesmo.Obrigado.

Mas agora surgiu o seguinte problema. Tenho as duas linhas no arquivo. Na primeira linha, como a última posição esta sem informação, a função scanner não a considera gerando somente 4 elementos na lista ao passo que na segunda linha é identificado 5 elementos. Como posso fazer para que na primeira linha seja identificado 5 elementos e não 4 ?

|0110|1|2|1||
|0110|1|2|1|200|

Obrigado.

Olá cristianoassis,

Altere o seu delimeter, o scanner suporta regex para fazer o match.

      scanner.useDelimiter("([^0-9]|^ )"); 

falows!!!

Mais eu preciso manter a “\|”, pois eu tenho linhas assim também |C001|1|2||Antonio Gomes| . Como posso manter os dois limitadores ?

Obrigado!

Resolvido!!

Encontrei esse código que funcionou blz !

Obrigado !

         BufferedReader StrR = new BufferedReader(new FileReader("C:/Projetos/Arquivo.txt"));
            String Str;
            String[] TableLine;
            //Essa estrutura do looping while é clássica para ler cada linha
            //do arquivo 
            while((Str = StrR.readLine())!= null){
                //Aqui usamos o método split que divide a linha lida em um array de String
                //passando como parametro o divisor .
                TableLine = Str.split("\\|");
                //O foreach é usadao para imprimir cada célula do array de String.
                for (String cell : TableLine) { 
                    System.out.print(cell+" "); 
                }
                System.out.println("\n");
            }
            //Fechamos o buffer
            StrR.close();
//