2012-08-26 209 views
0

我正在嘗試讀取二進制文件(.dat)並將所有這些東西保存在二維數組中。行數定義爲二進制文件中的行數,列數定義爲9.因此,我希望能夠在二進制文件的行中檢測-1,並填充二維數組跳過這些值。我目前正在使用下面的代碼,但它只會刪除一行,即使二進制文件中有多行負面的行。將二進制數據插入到二維數組中

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 = ""; 
    } 
} 

回答

0

當您決定「刪除」行,你創建字符串數組的一個新的列表,從中取出所需的行,將其轉換成一個數組,其被分配到數組2 - 我沒有看到任何地方宣佈。特別是,你似乎沒有對matrizcopiadorascargadas做任何事情。