将二进制数据插入2D数组

时间:2012-08-26 22:17:47

标签: java arrays multidimensional-array

我正在尝试读取二进制文件(.dat)并将所有这些内容保存在2D数组中。行数定义为二进制文件中的行数,列数定义为9.因此,我希望能够在二进制文件的行中检测-1,并填充2D数组跳过这些价值观。我目前正在使用以下代码,但它只删除一行,即使二进制文件中有多行带有否定行。

RandomAccessFile Archivocopiadora = new RandomAccessFile("Archivos/CopiadorasAgregadas.dat", "rw");
cantRegistros = Archivocopiadora.length()/tamRegistro;
matrizcopiadorascargadas = new String[(int)cantRegistros][9];
contadorespaciosvacios = 0;
int registroenceros = 0;
String lecturacopiadoraa = "";

for(int registro = 0; registro < cantRegistros; registro++) {
    Archivocopiadora.seek(registro * tamRegistro + 88);
    int prueba = Archivocopiadora.readInt();

    if (prueba == -1) {
        contadorespaciosvacios++;
        stdOut.println(contadorespaciosvacios);
        List<String[]> l = new ArrayList<String[]>(Arrays.asList(matrizcopiadorascargadas));
        l.remove(registro);
        array2 = l.toArray(new String[l.size()][9]);
    } else {
        Archivocopiadora.seek(registro * tamRegistro);
        for (int ex = 0; ex < 40; ex++)
            lecturacopiadoraa = lecturacopiadoraa + Archivocopiadora.readChar();

        lecturacopiadoraa.trim();
        matrizcopiadorascargadas[registro][0] = lecturacopiadoraa;
        matrizcopiadorascargadas[registro][1] = Double.toString(Archivocopiadora.readDouble());
        matrizcopiadorascargadas[registro][2] = Integer.toString(Archivocopiadora.readInt());
        matrizcopiadorascargadas[registro][3] = Integer.toString(Archivocopiadora.readInt());
        matrizcopiadorascargadas[registro][4] = Integer.toString(Archivocopiadora.readInt());
        matrizcopiadorascargadas[registro][5] = Double.toString(Archivocopiadora.readDouble());
        matrizcopiadorascargadas[registro][6] = Double.toString(Archivocopiadora.readDouble());
        matrizcopiadorascargadas[registro][7] = Double.toString(Archivocopiadora.readDouble());
        matrizcopiadorascargadas[registro][8] = Double.toString(Archivocopiadora.readDouble());
        lecturacopiadoraa = "";
    }
}

1 个答案:

答案 0 :(得分:0)

当您决定“删除”一行时,您创建一个新的字符串数组列表,从中删除所需的行,并将THAT转换为数组,该数组将分配给array2 - 我看不到在任何地方宣特别是,你似乎没有对matrizcopiadorascargadas做任何事情。