Olá estou com um problema em relação ao enconding dos arquivos. Estou usando o Ubuntu 9.04.
Estou usando o seguinte código para ler um arquivo passado para mim (creio que foi criado no Windows)
public LeitorTXT(String caminho) throws FileNotFoundException {
BRarquivo = new BufferedReader(new FileReader(caminho));
caminhoArquivo = new File(caminho).getAbsolutePath();
}
e para ler todo o conteúdo do arquivo
public StringBuilder lerArquivo() throws IOException {
StringBuilder conteudo = new StringBuilder();
BufferedReader in = new BufferedReader(new FileReader(caminhoArquivo));
while (in.ready()) {
conteudo.append(in.readLine());
}
return conteudo;
}
para escrever
Writer arquivo;
public void abrirArquivo(String caminhoArquivo, boolean append) throws FileNotFoundException, IOException {
System.setProperty("file.enconding", "UTF-8");
arquivo = new OutputStreamWriter(new FileOutputStream(caminhoArquivo), "UTF-8");
this.caminhoArquivo = new File(caminhoArquivo).getAbsolutePath();
}
public void escrever(final StringBuilder conteudo) throws FileNotFoundException,
IOException {
if (arquivo != null) {
arquivo.write(conteudo.toString());
arquivo.flush();
} else {
throw new FileNotFoundException();
}
}
A variável append não esta sendo porque ainda preciso aprender como escrever usando um Writer sem apagar o conteúdo já escrito. Alguma dica?
O problema é que a acentuação está saindo errada (?), como posso resolver isto ? Eu precisaria converter o enconding do arquivo para UTF-8, mas não sei como fazer. Tentei usar esta função, depois de muito procurar:
/**
* Converte o formato ISO8859-1 (default IE) para UTF-8
*/
public static String toUTF8(String isoString) {
String utf8String = null;
if (null != isoString && !isoString.equals("")) {
try {
byte[] stringBytesISO = isoString.getBytes("ISO-8859-1");
utf8String = new String(stringBytesISO, "UTF-8");
} catch (UnsupportedEncodingException e) {
// Mostra exceção mas devolve a mesma String
System.out.println("UnsupportedEncodingException: " + e.getMessage());
utf8String = isoString;
}
} else {
utf8String = isoString;
}
return utf8String;
}
Mas não funcionou porque não sei se o arquivo esta mesmo neste enconde (ISO-8859-1). Como posso me certificar?
Abraço.