importjava.io.*;/** * Esta classe converte o arquivo entrada.txt (codificação ISO-8859-1) para o arquivo * saida.txt (codificação UTF-8). */classTrocaCodificacao{publicstaticvoidmain(String[]args)throwsException{BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream("entrada.txt"),"ISO-8859-1"));BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("saida.txt"),"UTF-8"));Stringline;while((line=br.readLine())!=null){bw.write(line);bw.newLine();}br.close();bw.close();}}
1112
Usando OutputStreamWriter e InputStreamReader, você pode especificar o encoding.
Eu acho que FileWriter e FileReader, sendo subclasses destas duas, também deveriam poder ter o encoding aberto (elas sempre usam o default), mas fazer o quê. :?
T
thingol
#@®®¡$:
Eu acho que FileWriter e FileReader, sendo subclasses destas duas, também deveriam poder ter o encoding aberto (elas sempre usam o default), mas fazer o quê. :?
Eis um problema de passar parâmetros no construtor.
Se fosse apenas um “setter” (digams setEncoding) o cara que designou as classes do java.io não teria ficado com preguiça de pôr um construtor em FileWriter e FileReader que fizesse o desejado.
(Acho que ele achou que os usuários iriam naturalmente usar o InputStreamReader e o OutputStreamWriter se precisassem alterar o encoding. Você sabe que isso quer dizer “ser esperto demais” - supor que a gente, como pobre usuário, vai pensar a mesma coisa que o designer).
Como é no construtor, você acaba tendo de fazer esses encadeamentos que incluem uma chamada a “InputStreamReader” ou “OutputStreamWriter”.