Java ConjuntoDatos Class: Reading and Processing Text File Data

Computer science3.7 KB

ConjuntoDatos Class in Java

public ConjuntoDatos(File archivoTexto, String separador, Locale locale) throws Exception {
    this.archivoTexto = archivoTexto;
    this.separador = separador;
    this.locale = locale;
    cabecera = cabecera(this.archivoTexto);
    numeroLineas = numLineas(this.archivoTexto);
    numeroColumnas = numColumnas(this.archivoTexto);
    datos = leerDatos(this.archivoTexto, numeroLineas, numeroColumnas);
}

Reading the Header

private List cabecera(File archivoTexto) throws Exception {
    cabecera = new ArrayList();
    Scanner fichero = new Scanner(archivoTexto);
    String primeraLinea = fichero.nextLine();
    Scanner scLinea = new Scanner(primeraLinea);
    scLinea.useDelimiter(separador);
    scLinea.useLocale(locale);
    while (scLinea.hasNext()) {
        String columna = scLinea.next();
        cabecera.add(columna);
    }
    fichero.close();
    return cabecera;
}

Counting Lines

private int numLineas(File archivoTexto) throws Exception {
    numeroLineas = 0;
    Scanner fichero = new Scanner(archivoTexto);
    fichero.nextLine();
    while (fichero.hasNextLine()) {
        fichero.nextLine();
        numeroLineas++;
    }
    fichero.close();
    return numeroLineas;
}

Counting Columns

public int numColumnas(File archivoTexto) {
    numeroColumnas = cabecera.size();
    return numeroColumnas;
}

Reading the Data

public double[][] leerDatos(File archivoTexto, int filas, int columnas) throws Exception {
    datos = new double[filas][columnas];
    Scanner fichero = new Scanner(archivoTexto);
    fichero.nextLine();
    for (int i = 0; i < filas; i++) {
        String linea = fichero.nextLine();
        Scanner scLinea = new Scanner(linea);
        scLinea.useDelimiter(separador);
        scLinea.useLocale(locale);
        for (int j = 0; j < columnas; j++) {
              datos[i][j] = scLinea.nextDouble();
        }
    }
    fichero.close();
    return datos;
}

Retrieving a Column

public double[] getColumna(int columna) {
    double[] a = new double[numeroLineas];
    for (int i = 0; i < numeroLineas; i++) {
        a[i] = datos[i][columna];
    }
    return a;
}

Download

PDF Word HTML