Arquivo corrompendo

Olá!!

Tenho esses dois métodos que são chamados via RMI, eles lêem um arquivo transformando-o em um array de bytes, e o outro monta o arquivo com base nesse array, só que o arquivo é corrompido sempre. Alguém tem alguma idéia do que possa vir a ser isso?

public byte[] getServico(String localizacao) throws RemoteException{
        byte[] resultado = null;
        try{
            File arquivo = new File(localizacao);
            
            FileInputStream in = new FileInputStream(arquivo);
            resultado = new byte[(int)arquivo.length() + 1];
            in.read(resultado);
            in.close();
            
        } catch(Exception e){
            e.printStackTrace();
        }
        return resultado;
    }
try {
      Registry registro = LocateRegistry.getRegistry(listaDeIps[i],6400);
      DownloadServico servicoDownload = (DownloadServico)registro.lookup("download");
                
      byte[] arquivo = new byte[63488];
      arquivo = servicoDownload.getServico(caminhoEnomeServico + ".jar");
                 
      String diretorioDeDownloads = "C:/DownloadServicos/";
      File pasta = new File(diretorioDeDownloads);

      if(!pasta.exists())
          pasta.mkdir();
                 
      File arq = new File(diretorioDeDownloads + "/" + nome + ".jar");
      FileOutputStream out = new FileOutputStream(arq);
      out.write(arquivo);
      out.close();
                    
      } catch (Exception ex) {
                ex.printStackTrace();
      }