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