Pessoal queria que voçes dassem uma olhada nesse código j2me:
FileConn... file=//Pega arquivo de 3Mb e abre InputStream in.
byte[] buffer=new byte[3*1000*1024];//3Mb
in.read(b,0,3*1000*1024);//Armazena 3mb em uma variavel ,nao é isso ?, da OutOfMemory certo ?
Te jeito de resolver isso ,otimizar o codigo ?
vai ler os 3 mb de uma só vez ?
Se esse for problema qual seria a solucao ?
Desculpe a demora , ontem minha net caiu …
byte[] buffer = new byte[4096];
int bytesLidos = in.read(buffer,offset,buffer. length - offset );
tenha certeza que o tamanho do buffer é suficiente .
você pode colocar o tamanho dele dinamico , apartir do tamanho do arquivo que está lendo;
Valeu cara.
E esse int bytesLidos nao serve pra nada nao né ? Porque o que eu preciso e somente o array de bytes certo ?
Serve sim , porque dependendo do protocolo de comunicação você deve ficar lendo até a quantidade de bytes que deseja seja atingida ou até o time out que colocar estourar !
Cara nao sei como esta a sua aplicacao, mas geralmente se voce pretende ler esse arquivo todo pode valer a pena deixar os 3mb…alguns casos pode valer a pena deixar ate mais…afinal, nao existe nada mais custoso que IO. Alias existe, acesso de rede. Entao caso o teu app alem de ler for em alguma rede pra fazer isso, é bom que faça tudo de uma vez só ou pelo menos o minimo de vezes possivel.
Espero ter ajudado. Té mais.