簡體   English   中英

將二進制數據插入2D數組

[英]Insert binary data into a 2D 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 = "";
    }
}

當您決定“刪除”一行時,您將創建一個新的字符串數組列表,從其中刪除所需的行,然后將THAT轉換為一個數組,該數組將分配給array2,我在任何地方都看不到它的聲明。 特別是,您似乎並沒有為matrizcopiadorascargadas做任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM