Transformar arquivos em array de bytes

o trecho de codigo abaixo pega um arquivo e transforma ele em um array de bytes, o qual pode ser inserido num banco etc e logo abaixo ele converte devolta e grava em outro local
note que transformo em um jpg entao se forem testar use um arquivo jpgp

a minha duvida é sobre o funcionamento disso

se vcs executarem o codigo verão que ele imprime uns 500 mil numeros negativos e positivos mas nada do famoso um e zero

então no que realmente o arquivo é transformado? certamente nao é um código binario

alguem conhece um pouco o funcionamento disso?


JFileChooser fc = new JFileChooser();    
         byte[] bytes=null;
        int option = fc.showOpenDialog(this);    
        if (option == JFileChooser.APPROVE_OPTION) {  
            InputStream is = null;  
            try {  
                File file = fc.getSelectedFile();
                try {
                    System.out.println("Arquivo selecionado: " + file.getCanonicalPath());
                } catch (IOException ex) {
                    Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
                }
                
                
                is = new FileInputStream( file );
                bytes = new byte[(int)file.length() ];
                System.out.println("Bytes:  "+bytes+"");
                int offset = 0;
                int numRead = 0;
                
                try {
                    while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
                        offset += numRead;
                    }   
                } catch (IOException ex) {
                    Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    is.close();
                } catch (IOException ex) {
                    Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            String aux=null;
            for(int i =0; i<bytes.length; i++){
                aux+=""+bytes[i]+"";
                System.out.println(""+bytes[i]+"");
            }   
            System.out.println("Bytes.lenght:  "+bytes.length+"  \n ");
            System.out.println("Bytes:  "+aux+"");
            
            /////////////////////////////////////////////////////
            
            System.out.println("bytes.lenght= "+bytes.length+"");
            System.out.println("bytes.string= "+bytes.toString()+"");
            //converte o array de bytes em file
            File file = new File( "/home/asdasd/" + "teste.jpg" );
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream( file );
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            try {
                fos.write( bytes );
            } catch (IOException ex) {
                Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                fos.close();
            } catch (IOException ex) {
                Logger.getLogger(Binario.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else {  
            System.out.println("Nenhum arquivo selecionado!");  
        }


Acho que no ultimo post que fiz, disponibilizei um fonte com isso:

Acho q vc nao entendeu minha duvida
ao transformar o arquivo para insercao direta dele no banco eu obtenho uma enorme sequencia de numeros negativos e positivos mas que a pricnipio nao sao binarios

mas descobri a resposta
http://blog.globalcode.com.br/2010/10/por-que-byte-157-99-parte-3-de-3.html

no meu caso o arquivo é convertido em um binario correspondente mas a representacao que me retorna é a conversao em base decimal

[quote=nakrak]Acho q vc nao entendeu minha duvida
ao transformar o arquivo para insercao direta dele no banco eu obtenho uma enorme sequencia de numeros negativos e positivos mas que a pricnipio nao sao binarios

mas descobri a resposta
http://blog.globalcode.com.br/2010/10/por-que-byte-157-99-parte-3-de-3.html

no meu caso o arquivo é convertido em um binario correspondente mas a representacao que me retorna é a conversao em base decimal
[/quote]

Entendi.
mas to achando estranho pq se vc tá salvando em binario (byte<=256) , deveria tar retornando na mesma base. Só por curiosidade, qual era o problema que estava ocorrendo pra acontecer isso?

o que eu queria na verdade era uma forma de enviar um arquivo para um servidor web externo via java, fazendo isso atraves de um proxy autenticado.

Nao encontrei uma forma de fazer isso que funcionasse, alias achei muito pouco conteudo com proxy http autenticado no java, entao resolvi testar a conversao de um arquivo em caracteres para que pudesse enviar via url, onde um script php receberia a url com a string e faria a conversao reversa

de qualquer forma isso nao é viavel visto que uma pequena imagem ja gera mais de 500 mil caracteres e eu teria que enviar muitas requisicoes para coneguir reconstruir o arquivo

so estranhei que se vc remover o try que esta na linha 21 o que ele retorna é um monte de zeros, ou seja, a conversao da forma que fiz nao funciona.

aproveitando a oportunidade Luiz Augusto Prado, vc tem alguma ideia de como eu posso fazer o upload de arquivos utilizando java e passando atraves de um servidor com proxy?

eu abri um topico sobre isso aqui mas ninguem respondeu

segue o link http://www.guj.com.br/java/309336-enviar-arquivos-via-ftp-passivo-atraves-de-um-proxy-http-autenticado

Eu já fiz isso utilizando socket. Mas faz uns anos. O fonte não tá aqui comigo.
Vou instalar o netbeans aqui. mais tarde eu compilo pra ver se tenho alguma idéia.
Sucesso!