Erro ao ler um arquivo txt ? =Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

5 respostas
S

Olá estou com um problema, tenho uma classe para ler um arquivo texto,
e outra para exibir o que foi lido, com um arquivo texto pequeno funciona normalmente, mas quando o arquivo texto e um pouco grande dá o seguinte erro
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

Alguém sabe o porque dá esse erro ? O arquivo que estou tentando ler tem 22.254KB
abaixo segue as duas classes que utilizo LeitorBuffer e Uso Leitor

Code:

import <a href="http://java.io">java.io</a>.*;

public class LeitorBuffer

{

public static String ler(File arquivo)	

{
StringBuffer sb = new StringBuffer();
	
	try
	{
		FileReader  reader = new FileReader(arquivo);
		BufferedReader bufReader = new BufferedReader(reader);
		String s;
		int t;
		do
		{
			s = bufReader.readLine();
			if (s!=null)
			{					
				sb.append(s+"\r\n");		
			}			   
		} while (s!=null);
	     bufReader.close();
	     reader.close();
	}catch (IOException e)
		{
			e.printStackTrace();
		}	
	return sb.toString();
}

}

Classe para exibir o arquivo lido

Code:

import <a href="http://java.io">java.io</a>.*;

public class UsoLeitor {
public static void main(String args[])
{
	
	File arquivo = new File("MeuTexto.txt");
	String s = LeitorBuffer.ler(arquivo);
	System.out.println(s);
	  
}

}

Alguem pode me ajudar ? O que está errado ?
Desde já agradeço.

5 Respostas

peczenyj

consegui ler 2 megas com a sua classe um pouco modificada:

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;

public class LeitorBuffer
{
	public static String ler(String arquivo){
		return ler(new File(arquivo));
	}

	public static String ler(File arquivo){

		StringBuffer sb = new StringBuffer();

		try{
			String s;
			BufferedReader bufReader = new BufferedReader(new FileReader(arquivo));

			while((s = bufReader.readLine()) != null){
				sb.append(s+"\r\n");
			}

			bufReader.close();

		}catch (java.io.IOException e){
			e.printStackTrace();
		}

		return sb.toString();
	}

	public static void main(String args[]){

		System.out.println(LeitorBuffer.ler("qqcoisa.txt"));

	}
}
S

peczenyj , eu agradeço, mas o erro permanece mesmo com a sua classe ao ler um arquivo de 22.254KB.
Pq será tá dando esse erro ?

S

peczenyj , eu agradeço, mas o erro permanece mesmo com a sua classe ao ler um arquivo de 22.254KB.
Pq será tá dando esse erro ?

rodrigo_gomes

Olá,
Esse post pode ajudar
http://www.guj.com.br/posts/list/17455.java

[]´s
Rodrigo

rodrigo_gomes

desculpe, saiu duplicado o post…
alguem pode deletar?

Criado 31 de maio de 2006
Ultima resposta 1 de jun. de 2006
Respostas 5
Participantes 3