Como guardar una matriz cuadrada en un archivo txt

Que tal pues gracias a este sitio he encontrado parte de mi solución, me refiero a como leer una matriz de un archivo txt y meterla a otra matriz
Pero ahora me queda la duda de como hacerla a la inversa, tal vez sea algo fácil pero la verdad ya me estoy enredando un poco más..

1 respuesta

Respuesta
2
Supongo que lo que quieres es pasar de un array de elementos de texto a un archivo txt, creando una nueva línea por cada elemento del array. Ahí va la solución:
Primero, necesitas importar las siguientes librerías:
import java.util.ArrayList;
import java.io.FileWriter;
import java.io.IOException;
...y el método que hace lo que quieres es este:
public void arrayToFichero(){
     ArrayList list = new ArrayList();
     FileWriter fw = null;
     String elemento;
     //Meto unos cuantos elementos en el array para probar
     for (int i=0; i<10; i++){
         list.add("Elemento " + i + " del array");
     }
     try {
         fw = new FileWriter("c:/fichero.txt");
         for (int i=0; i
<list.size(); i++){
             if (i>0){
                 //nueva línea
                fw.write(System.getProperty("line.separator"));
             }
             elemento = (String)list.get(i);
             fw.write(elemento);
         }
     } catch (IOException e) {
         e.printStackTrace();
     }
     finally{
         if (fw!=null){
             try {
                 fw.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
             fw = null;
         }
     }
}

Espero que te sirva. Un saludo y no olvides valorar mi respuesta ;-)
Carlos.
Gracias! Esta muy claro de verdad que ya entendí y ya lo aplique y funciona perfectamente ahora tengo una duda más,
es viable utilizar en lugar del arraylist una matriz cuadrada,
te explico rapido tengo un canvas estoy dibujando figuras estilo paint...
Pero nada más pinto lineas y puntos entonces tengo que ir guardando los puntos donde doy click en una matriz, para después realizar deiferentes operaciones como afilar, rotar, trasladar, etc, para esto se me hace mucho más fácil manejar matrices.
No se si sea viable utilizar este método que me explicas pero con matrices
Sería muy parecido. Imaginemos que los elementos de la matriz son Strings
public void arrayToFichero(){
   String[][] matriz = new String[10][10];
   FileWriter fw = null;
   //Meto unos cuantos elementos en la matriz para probar
   for (int i=0; i<matriz.length; i++){
     for (int j=0; j<matriz
.length; j++){
        matriz[j] = i + "_" + j + ";";
     }
   }
   try {
     fw = new FileWriter("c:/fichero.txt");
     for (int i=0; i<matriz.length; i++){
       if (i>0){
         fw.write(System.getProperty("line.separator")); //nueva línea
       }
       for (int j=0; j<matriz.length; j++){
         fw.write(matriz[j]);
       }
     }
   } catch (IOException e) {
      e.printStackTrace();
   }
   finally{
      if (fw!=null){
         try {
            fw.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
         fw = null;
      }
   }
}

Espero que te sirva. Un saludo y no olvides valorar mi respuesta ;-)
Carlos.
Gracias carlos nuevamente me esta sirviendo muchísimo la información que me estas explicando
oye por ultimo me queda una duda, tengo este método que también me base en tus explicaciones pero me genera un error te pongo el método:
public static int[][] lee(String ruta) {
try {
FileReader arch = new FileReader(ruta); // Lector de archivo
BufferedReader buff = new BufferedReader(arch); // Buffer de lectura
// Calcular las dimensiones de la matriz y reservar espacio
String linea = buff.readLine();
StringTokenizer st = new StringTokenizer(linea);
int nFil = Integer.parseInt(st.nextToken());
int nCol = Integer.parseInt(st.nextToken());
int[][] mat = new int[nFil][nCol];
// Rellenar la matriz
for (int i = 0; i < nFil; ++i) {
linea = buff.readLine();
st = new StringTokenizer(linea);
for (int j = 0; j < nCol; ++j)
****aqui es dode me genera el error me dice que son tipos incompatibles****
----> mat[j] = Integer.parseInt(st.nextToken());
}
//System.out.println("Dimensiones: " + nFil + "x" + nCol);
buff.close();
arch.close();
return mat;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
Gracias de antemano! :D
El error te lo está dando porque no puedes meter un int en mat[j], sino en mat[j]. Haz este cambio y te funcionará (a no ser que haya más errores por otro sitio)
Te agradecería que valorases mi respuesta para que quede finalizada.
Gracias por todo experto siento la tardanza pero me quede sin servicio :P
Todo lo que me explicaste quedo claro y ya esta corriendo luego pongo un link para ver toda la aplicación que esta muy padre
Gracias excelente ayuda!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas