Exceptions

Iniciado por m@o_614, 27 Junio 2014, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos

tengo el siguiente codigo :

Código (java) [Seleccionar]
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.io.RandomAccessFile;

public class Token {

public static void main(String[] args) {
int car;
String nombre,componenteLexico;
Scanner teclado = new Scanner(System.in);
System.out.print("Dame el nombre del archivo: ");
nombre = teclado.nextLine();
teclado.close();
try
{
File archivo = new File(nombre);
RandomAccessFile r = new RandomAccessFile(archivo,"r");
while((car = r.read()) != -1)
{
componenteLexico = Token.leerArchivo(nombre,r);
System.out.print(" "+componenteLexico);
}
r.close();
}
catch(IOException ex)
{
System.out.println("No se pudo abrir archivo");
}

}

public static String leerArchivo(String nombre,RandomAccessFile r)
{
int car;
char c;
long posicion;
String cadena = null;
StringBuilder sb = new StringBuilder();
try
{
posicion = r.getFilePointer();
r.seek(posicion-1);
    while((car = r.read()) != ' ')
    {
    c = (char)car;
        sb.append(c);
    }
    cadena = sb.toString();
}
catch(IOException ex)
{
System.out.println("No se pudo abrir archivo");
}
return cadena;
}
}


lo que hace es leer un archivo e ir guardando e imprimiendo cada una de las palabras que contiene este archivo, el problema es que me arroja una excepcion que dice:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

creo que tiene que ver con que estoy usando mal la clase StringBuilder, pero soy principiante y todavia no se manejar bien las excepciones.

gracias

Risketo

#1
Esa excepción se lanza cuando no hay memoria suficiente y el garbage collector no puede dar mas memoria a la máquina virtual de java. Es muy grande el fichero que lees?
No veo nada raro en el uso que le das a StringBuilder, podrías devolver sb.toString() y ahorrarte el String cadena.