Galera eu tenho o seguinte código
Ele realmente faz o que eu quero.
E o que eu quero é gravar uma array de bytes num arquivo de texto.
Mas o problema é que as vezes o byte[] tem mais de 100.000 ítens no array, e fazendo o Loop com FOR
pra atingir todos os bytes do array demora muito e ainda mais que normalmente são muitos arquivos bytes.
E depois que eu gravo no arquivo de texto dividindo por 2 vírgulas ( , ) , Eu leio o arquivo byte e crio o arquivo byte novamente através do arquivo de texto dando SPLIT por 2 vírgulas.
Ele funciona tudo perfeitamente, mas o problema é a demora mesmo. Eu queria alguma forma mais efetiva.
O que eu tenho em mente no momento é ele converter diretamente um array de bytes para uma String dividindo por “,”
exatamente como está descrito no código abaixo.
Pois o problema maior é pra criar o arquivo pelo fato de ele fazer um LOOP pra criar a String dividindo por pelas duplas vírgulas, na hora de ler é mais rápido.
Alguem tem alguma solução?
Esse é a primeira parte do código onde ele pega o arquivo Byte e cria uma String separando cada byte do array por “,” .
[code]public String puxando_string_imagem(byte[] byte_enviado){
StringBuilder bytes_imagem_builder = new StringBuilder();
bytes_imagem_builder.append(byte_enviado[0]);
for(int i2 = 1; i2 < byte_enviado.length; i2++){
bytes_imagem_builder.append(",,");
bytes_imagem_builder.append(byte_enviado[i2]);
}
String fromStringBuildToString = bytes_imagem_builder.toString();
return fromStringBuildToString;
}
[/code]
Esse é o segundo código onde ele escreve num arquivo de texto a String que está com os bytes divididos por 2 vírgulas.
try{
FileWriter file = new FileWriter("C:\\arquivo.txt");
imagemDAO imgDAO = new imagemDAO();
imagem img = imgDAO.getBuscarImagemPeloID(1);
file.write(puxando_string_imagem( img.getImagem() ));
file.close();
}catch(Exception e){
e.printStackTrace();
}
E essa é a terceira parte, o código ele pega do arquivo de texto a String dividida por “,” e transforma num array de bytes novamente para ser inserido ao banco de dados.
try{
File file = new File(file_param);
FileReader file_read = new FileReader(file);
BufferedReader bf_reader = new BufferedReader(file_read);
String linha;
while((linha = bf_reader.readLine()) != null){
String bytes_imagem[] = linha.split(",,");
imagemDAO imgDAO = new imagemDAO();
imagem img = new imagem();
byte[] byte_imagem = new byte[bytes_imagem7.length];
for(int i2 = 0; i2 < bytes_imagem7.length; i2++){
byte_imagem[i2] = Byte.parseByte(bytes_imagem7[i2]);
}
img.setImagem7(byte_imagem);
}catch(Exception e){
img.setImagem7(null);
}
try{
imgDAO.adicionar(img);
}catch(Exception e){
e.printStackTrace();
}
}
Lembrando que no banco de dados a coluna está em BLOB. Utilizo O MySQL.
Alguem tem uma forma mais rápida?