Hexadecimal 3F

[color=“blue”]Alguem poderia me ajudar
Obrigado por sua colaboração[/color]

Problema:

Estou tentando gerar um arquivo a partir de outro já existente. Estou lendo este arquivo byte a byte e gravando o valor obtido diretamente no arquivo de saída. Porém, ao encontrar no arquivo de entrada um desses caracteres: [color=“red”]“9D”, “90”, “81”, “8D”, “8F”[/color] ( OBS:expresso em hexadecimal ) o programa Java está substituindo esses caracteres pelo “3F” no arquivo de saída.

[color=“green”]OBS: Já tentei utilizar todos os tipos de variáveis permitidas pelo metodo READ() para ler o conteúdo do arquivo de entrada e o resultado obtido foi sempre o mesmo. Também já tentei forçar diretamenta à gravação de um dos caracteres descritos e o Java continua substituindo pelo caracter “3F”[/color]

Programa Java utilizado:

   FILE1 = new FileReader("ARQ1.xxx");
   FILE2 = new FileWriter("ARQ2.xxx", false);

   int  ARQ_BUFFER1 = 0;  
   try
   {
   while ( ( ARQ_BUFFER1 = FILE1.read () ) != -1 )
       {
       FILE2.write(ARQ_BUFFER1);
       }  

   } 
   catch (IOException ERR) 
   { 
   System.exit(0);
   }   

Alguem sabe como resolver esse problema, pois tenho que gerar o novo arquivo com os mesmos caracteres do arquivo de entrada. Que devo fazer ? Utilizar outro método de leitura ? Qual ? (Estou lendo um arquivo binário, caracteres com “fim de linha” devem ser tratados como informações válidas e dependendo do método de leitura eles serão ignorados ou irão provocar resultados inesperados, como finalizar a leitura ) Devo utilizar charset() ? Como faze-lo ? Alguem possui algum exemplo de sua utilização ?

Não manipule arquivos binarios com Reader/Writer pq eles causam conversão de caracteres, use InputStream/OutputStream.

Regrinha simples: tudo que for Reader/Writer trata arquivos texto. Tudo que for InputStream/OutputStream mexe com arquivos binários. :wink:

FileReader e FileWriter trabalham com arquivos texto - ou seja, eles refazem o encoding do arquivo. Use FileOutputStream e FileInputStream no lugar :wink:

Moral da historia, 3 respostas que em nada te ajudaram a não ser te dizer que voce ta fazendo errado. Uteis vocês em!

InputStream in = new FileInputStream("ARQ1.xxx");
OutputStream out = new FileOutputStream("ARQ12xxx");
int b;
while((b = in.read()) != -1)
   out.write(b);

Isso concertesa a gente somos! :smiley:

[quote=“louds”]Moral da historia, 3 respostas que em nada te ajudaram a não ser te dizer que voce ta fazendo errado. Uteis vocês em!
[/quote]

De fato. :frowning:
Foi mal…