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");
}
}