Leitura de arquivos

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.