Jump to content
carvalho2707

[android] buffered / out of memory

Recommended Posts

carvalho2707

boas, tenho um ficheiro txt com 10k linhas

quando estou a ler cada linha no txt da-me erro e diz out of memory.. e diz qql coisa do buffer..

o que posso fazer para conseguir ler um ficheiro com muitas linhas sem problemas destes?

obrigado winka.gif

Share this post


Link to post
Share on other sites
carvalho2707

é no emulador...

is = am.open("BDFilmes.txt");
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(inputStreamReader);
String line;
StringBuilder s = new StringBuilder();
while(line = br.readLine() != null){
s.append(line);
s.append("\n");
String nome = s.append(line).toString();
}

Share this post


Link to post
Share on other sites
progster

Nesse caso, aguarda por outras opiniões, pois não estou muito por dentro do assunto.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
KTachyon

Versão extendida:

Repara, tens um ciclo que faz append duas vezes à linha e depois a atribui a uma variável que não serve para nada. No fundo tu não estás a ler uma linha para uma String nome. Estás a ler cada linha e a adicionar ao StringBuilder (duas vezes) e depois a retirar para a String. No ciclo final terias a String com todo o ficheiro de 10k linhas em duplicado na String nome.

Agora, depende é do conteúdo do ficheiro, mas imagino que o facto de tu teres uma String nome dentro do ciclo que vai levando com cada vez mais informação e que não é imediatamente limpa pelo Garbage Collector... em principio é normal que te rebente a memória.

De qualquer forma, devias colocar cá o erro, porque "e diz qql coisa do buffer" não nos diz muito.

Versão resumida:

Tira a linha:

String nome = s.append(line).toString();


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
KTachyon

Epah, isso não é propriamente uma dúvida para dispositivos móveis. O StringTokenizer tem uma função e o StringBuilder tem outra completamente distinta.

O StringTokenizer serve para separar uma String em "tokens". O StringBuilder serve para construir Strings.

Sem sabermos o que queres fazer, muito dificilmente alguém te pode dizer o que deves usar.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Nazgulled

Sem sabermos o que queres fazer, muito dificilmente alguém te pode dizer o que deves usar.

Isto e o facto de chegares aqui e dizer "tenho um problema ali que dá um erro qualquer" também não ajuda muito... Ninguém é bruxo neste fórum. Experimenta colocar aqui o stacktrace completo do erro (excepção suponho?) para ajudar a perceber o que se está a passar ao certo...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.