Hola a todos.
Me estoy volviendo loco intentado guardar y luego cargar un array de strings de dimension [10][10], el cual no necesariamente debe estar lleno, con el resto de posiciones libres a null.
La tactica que utilizo es guardarlo todo como una cadena de texto y a partir de ahi recuperarlo. este es el codigo de los dos metodos con los que lo hago:
public static void guardarCategorias(){
try{
String guardar="", cadenaGuardar;
DataOutputStream salida=new DataOutputStream(new FileOutputStream
(new File(GestionTrabajadores.rutaCategorias)));
byte [] cadena;
for(int i=0;i<categorias.length;i++){
for(int j=0;j<categorias[i].length && categorias[i][j]!=null;j++){
cadenaGuardar=categorias[i][j];
if(categorias[i][j]==null){
categorias[i][j]="";
//guardar+=categorias[i][j];
}
guardar+=categorias[i][j]+" ";
}
}
System.out.println("Se va a guardar "+ guardar);
//guardar=guardar.trim();
cadena=guardar.getBytes();
salida.write(cadena);
salida.writeInt(totalCategorias);
salida.flush();
salida.close();
System.out.println("Se han guardado correctamente las categorias.");
}catch (IOException ioe){
System.err.println("Ha habido un error en el proceso de guardado.");
ioe.printStackTrace();
}
}
public static void cargarCategorias(){
int categoriasIntroducidas=0, pos,b;
String categoria="", cadena;
byte [] cadenaBytes=new byte[5000];System.out.println("Hasta aqui llego");
try{
ObjectInputStream entrada=new ObjectInputStream(new
FileInputStream(new File(GestionTrabajadores.rutaCategorias)));
totalCategorias=entrada.readInt();
entrada.close();
pos=0;
//DataInputStream entrada=new DataInputStream(
//FileReader entrada=
// new FileReader(new File(GestionTrabajadores.rutaCategorias));
BufferedReader buffer=new BufferedReader(new FileReader(new File(GestionTrabajadores.rutaCategorias)));
System.out.println("El total de categorias es "+totalCategorias);
/*for(pos=0;((b=entrada.read())!=-1);pos++){
cadenaBytes[pos]=(byte)b;
}*/
//cadena=cadena.trim();
//String cadena=new String(cadenaBytes);
cadena=buffer.readLine();
cadena=cadena.trim();
buffer.close();
System.out.println(cadena.charAt(0));
System.out.println("La cdena a cargar es "+cadena);
for(int i=0;i<cadena.length() && categoriasIntroducidas<totalCategorias;i++){
if(cadena.charAt(i)!=' '){
categoria+=cadena.charAt(i);
pos=i;
}else{
//asignaCategoria(categoria);
categorias[0][categoriasIntroducidas]=categoria;
categoriasIntroducidas++;
System.out.println("Se deberia asignar "+categoria +" y se asigna " +
""+categorias[0][categoriasIntroducidas--]);
categoria="";
pos=i;
}
}
if(categoriasIntroducidas==totalCategorias){
categoriasIntroducidas=0;
cadena="";
}
for(int i=pos+1;i<cadena.length() && categoriasIntroducidas<totalCategorias;i++){
if(cadena.charAt(i)!=' '){
categoria+=cadena.charAt(i);
pos=i;
}else{
//asignaComplemento(categoria);
categorias[0][categoriasIntroducidas]=categoria;
categoriasIntroducidas++;
categoria="";
}
}
System.out.println("Se han cargado correctamente las categorias.");
}catch (Exception errorEntrada){
System.err.println("Ha habido un problema en el proceso de cargado de categorias profesionales.");
}
}
Creo que es muy lioso. Debe haber una forma mas facil. Un saludo y gracias.