Darkoo escribió:a ver si algún alma caritativa me puede ayudar en mis dudas:
1º) Esta es la que más me interesa. Tengo un JTextArea (texto) y quiero que el contenido de ese objeto se grabe en un fichero txt. Para conseguir el nombre y la ubicación del fichero uso la clase JFileChooser (chooser). No sé muy bien cómo empezar a coger el texto y pasarlo a un fichero.
Para abrir un fichero txt lo he hecho así (y funciona bien):
java.io.BufferedReader dis = new java.io.BufferedReader(new java.io.FileReader(chooser.getSelectedFile()));
String archivo = new String(dis.readLine());
texto.setText("");
while (archivo!=null) {texto.append(archivo + "\n"); archivo = new String (dis.readLine());};
y para guardar el textooa un fichero lo he intentado así, pero no me va. me falta algo:
chooser.getSelectedFile().createNewFile();
java.io.BufferedWriter dis = new java.io.BufferedWriter(new java.io.FileWriter(chooser.getSelectedFile()));
dis.writeChars(texto.getText());
ya sé que está fatal, pero no se me ocurre cómo hacerlo.
Yo lo hago asi:
Este metodo es para guardar en un archivo lo que se le va pasando, lo abre, lo guarda y lo cierra.
public static void Escribirenarchivo(String texto)
{
try
{
FileOutputStream pw = new FileOutputStream(archivo.txt, false); //El false es para que se pueda añadir mas texto despues
BufferedOutputStream p = new BufferedOutputStream(pw);
p.write(texto.getBytes());
p.flush();
p.close();
pw.flush();
pw.close();
}
catch (FileNotFoundException fnfe)
{
}
catch (IOException ioe)
{
}
}
Darkoo escribió:2º) Otra pregunta: qué es que se pueda serializar??? es que en un ejercicio me dicen que una clase se pueda serializar y clonar. Para clonar creo que lo único que hay que hacer es definir el método clone() dentro de la clase, ¿no? ese obviamente hace una copia del objeto.
Supongo que serializar será lo mismo, pero no sé ni qué método hay que definir, ni de qué interface se trata, ni de qué hace ese método.
Al serializar una clase, loq ue se hace es guardar un objeto en un archivo, esto se hace para por si acaso el programa se cierra, u ocurre cualquier cosa, para asi no perder datos.
Para serializar, se pone
implements Serializable al decalrar la clase, y despues se guarda el objeto en un fichero, un ejemplo de guardar un objeto en un fichero podia ser:
FileOutputStream fos = new FileOutputStream("fichero.bin");
FileInputStream fis = new FileInputStream("fichero.bin");
ObjectOutputStream out = new ObjectOutputStream(fos);
ObjectInputStream in = new ObjectInputStream(fis);
ClaseSerializable o1 = new ClaseSerializable();
ClaseSerializable o2 = new ClaseSerializable();
// Escribir el objeto en el fichero
out.writeObject(o1);
out.writeObject(o2);
...
// Leer el objeto del fichero (en el mismo orden !!)
o1 = (ClaseSerializable)in.readObject();
o2 = (ClaseSerializable)in.readObject();
Darkoo escribió:3º) la última duda. No entiendo muy bien para qué sirve lo de throw y throws. Si tu quieres que una excepción se lance, ¿no es suficiente poner "try{ } catch (){}"??
throw y throws sirve para saltarse las excepciones, y
try{ } catch (){} para capturarlas y poder tratarlas si se desea, lo entenderas mejor con un ejemplo.
Imagina que tienes un campo de texto en el que se debe introducir un numero para sumarlo ocn otro, pues bien si metes una letra, al convertirlo a entero, te dará una excepcion
NumberFormatException entonces si no capturas ni te saltas esa excepcion, el programa se cerrará con un error, o se bloqueara o cualquier cosa. Para evitar eso tenemos dos opciones.
1.- Si utilizamos
throw o throws el programa se saltará ese paso, no se cerrará ni se bloqueara, pero tampoco hará loq ue tiene que hacer, puesto que el parametro metido no es correcto.
2.- Si utilizamos
try{ } catch (){} capturaremos la excepcion, y por ejemplo podemos hacer que si se lanza la misma, pues nos muestre un cuadro de dialogo diciendo que metamos un numero, por ejemplo
try
{
//Aqui pondriamos el codigo a evaluar
}
catch (NumberFormatException nfe)
{
//Aqui pondriamos que hacer si se lanza la excepcion, podemos no poner nada
}
Espero que te sirva, saludos