Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/06/2015, 17:38
Juny18
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 2
ordenar números de un fichero con FileReader

Hola a todos este es el enunciado del problema: Realizar un interfaz gráfica con un TextField y un Button para introducir números enteros, en caso de no ser un número entero mostrar un mensaje informativo al usuario diciendo el error y dejando el foco TextField y el campo en blanco. Cada número que se inserte debe guardarse en un fichero denominado datos.dat. Cuando no se introduce datos, cadena vacía, abre una ventana con TextArea con los números del fichero ordenado de forma decreciente. Cuando se cierra se cierra todo.

Escribir me escribe perfectamente, pero a la hora de leer . Me da esté fallo: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0

Aquí pongo mi clase que muestra:

Código:
package ficheroordenado;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import javax.swing.JOptionPane;

/**
 *
 * @author Nephalem
 */


public class mostrarodenado extends javax.swing.JFrame {

  File archivo;//para poder crear el fichero
  FileReader fr; //para leer el fichero de texto.
  BufferedReader br;//para mostrar con el bufferedReader en ficheros de texto
  int TamañoArray;
    
  public mostrarodenado() {
     
        
        initComponents();
         archivo= new File ("datos.txt");
           /*aquí llamamos a la constante del array y le asignamos valor
      el tamaño se calcula dividiendo la longitud del archivo entre lo que ocupa dividido entre 8
         ESTO DEBE IR DESPUES DE CREAR EL ARCHIVO
         */
         TamañoArray = (int)archivo.length()/(Integer.SIZE/8);  
         mostrarfichero();
         this.setLocationRelativeTo(null);
    }

   public void mostrarfichero()
    {
        String cadenalee=""; //la declaro aquí porque el ámbito de la variables es solo este método.
        int [] ornintro; //array para ordenar los números del fichero
        int i = 0,x=0;//el índice del array
      
        
        ornintro=new int [TamañoArray];
     
      try 
      {
         fr=new FileReader(archivo);
         br=new BufferedReader(fr);// en vez de la salida estandar que lea desde el fichero
      
/*lee el fichero hasta que se encuentre una línea en blanco(lee línea por línea*/
            cadenalee=br.readLine();
          while(cadenalee!=null) 
                {
                       
                        ornintro[i]=Integer.parseInt(cadenalee);
                        br.readLine();
                        i++;
                  
                }
             fr.close();
      
           
     Arrays.sort(ornintro);
      
         //volcando al textarea los números ordenados.
         
         for(i=TamañoArray-1; i>=0;i--)
         {
             areanumeros.setText(Integer.toString(ornintro[i]));
         
         }
  
      
      } catch (FileNotFoundException ex)
      {
         JOptionPane.showMessageDialog(this,"no se encuentra el fichero.");
      }
      catch(IOException io)
      {
             JOptionPane.showMessageDialog(this,"Error al leer el fichero");
      }
        
    }
Ya revisé 20000 veces, pero no entiendo porqué me falla, AYUDENME es para entregarlo mañana a las 11:15 de la mañana.

Gracias.