Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando Scanner para ler arquivo charset "windows-1252" no mac não acha próxima linha

Boa Tarde, estou estudando em um MAC e para simular o problema de charset fiz um Código para gravar alguns registros usando o charset "windows-1252"e fiz uma classe para ler usando Scanner, mas quando uso scanner ele náo encontra nenhuma linha no arquivo. Mudei a leitura para utilizar InputStream e ele le os registros perfeitamente (com o problema de não interpretar os caracteres corretamente mas lê). A minha dúvida é do porque o Scanner não consegue nem sequer encontrar a proxima linha.

Segue o código que fiz para ler (usando os dois métodos: InputStream e Scanner):

package br.com.vagner.java.testes;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Scanner;

public class TesteEncode {

    public static void main(String[] args) throws IOException {

// Primeira leitura usando Scanner (da false no hasNextLine()
        Scanner scanner = new Scanner(new File("Dados.txt"));

        System.out.println("Scanner HasNextline()" + scanner.hasNextLine());
        while (scanner.hasNextLine()){

            String campo =  scanner.nextLine();
            System.out.println(campo);

        };     
        scanner.close();

//Segunda leitura usando InputStrem traz as linhas

        InputStream fis = new FileInputStream("Dados.txt");
        Reader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        String linha = br.readLine();

        while (linha != null) {
            System.out.println(linha);
            linha = br.readLine();
        }

        br.close();




    }

}

e este é o código que usei para criar o arquivo com o charset "windows-1252":

package br.com.vagner.java.testes;

import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;

public class TesteEscritaPrintStreamPrintWriterVagner
{

    public static void main(String[] args) throws IOException {


        PrintWriter pw = new PrintWriter("Dados.txt","windows-1252");

        pw.println("Ações");
        pw.println("Debêntures");
        pw.println("Opções");
        pw.println("Fundos de renda variável");    
        pw.close();
        System.out.println("Arquivo Datos.txt Gerado");

    }

}
1 resposta
solução!

Acho que você precisa instanciar o scanner passando o nome do charset que ele deveria usar...