Foro sobre Java SE > Duda escribir y leer fichero
Hola, bueno antes de nada podrías ser mas conciso haciendo tus preguntas...?? La verdad que no he entendido cual es tu duda, ni tu problema....
sobre si deberias tener una instancia de LineaDocumento en el metodo leer bueno eso depende de lo que quieres que realice ese metodo, si simplemente lo que haces es leer lineas del fichero y mostrarlas por pantalla, no es necesario hacer mucho mas de lo que tienes, pero si lo que quieres es crear un objeto de tipo LineaDocumento a traves de lo leido del fichero, entonces lo que deberias es crear un array de LineaDocumento[] donde iras guardando cada uno de los objetos creados al leer cada linea, al finalizar el metodo devolveras ese array con lineas y de esa manera podras tratar esas lineas en otro sitio. Todo dependera de lo que quieras hacer...
Por lo que he visto todo parece bien, pero ten en cnta que tu en los ficheros estas escribiendo texto, hay formas de escribir directamente objetos y leerlos con las clases ObjectOutputStream y la ObjectInputStream, entonces directamente leerias y escribirias objetos de tipo LineaDocumento en los ficheros. Pero ya te digo todo depende de lo que quieres hacer con esas lineas que lees, si solo es mostrarlas por pantalla no haces na, pero si tienes que tratarlas tienes que buscar el mecanismo que mas te convenga para devolverlas una vez leida...
Otra cosa que veo es que le pasas los writers y readers desde la principal o desde otro lado, ten en cuenta que para escribir en un fichero, el fichero no puede estar abierto en modo lectura, siempre tienes que jugar cerrando y abriendo writers y readers...
Bueno y sobre lo demás ya te digo que sin saber exactamente que necesitas hacer con lo que lees, no se si vas por buen camino o no.
Un saludo!
Hola a todos! tengo que hacer dos clases, pero no se si hasta el momento llevo esto bien al final de cada clase esta la duda, muchas gracias!
import java.io.*;
import java.util.*;
import java.lang.*;
public class LineaDocumento
{
// atributo descripcion tipo cadena de texto
private String descripcion;
//metodos de acceso get y set
public String getDescripcion (){
return descripcion;
}
public void setDescripcion (String descripcion){
this.descripcion = descripcion;
}
//constructor con un parametro el atributo
public LineaDocumento(){
this.descripcion = "vacio";
}
public LineaDocumento (String descripcion){
this.descripcion = descripcion;
}
// constructor copia
//metodo toString
public String toString(){
String mensaje = "Esto es la descripcion " + descripcion;
return mensaje;
}
/* guardar(writer) que recibe un objeto de la jerarquia Writer y escribe una linea de texto con el
valor del atributo*/
public void escribirEnFichero (BufferedWriter bw)throws IOException{
try {bw.write(descripcion);
bw.flush();
}catch (IOException e) {
System.out.println("Error E/S: " + e);
}
}
/* recuperar(Reader) que recibe un objeto de la jerarquia Reader y lee una linea de texto con el
valor del atributo*/
public void leeDeFichero(BufferedReader br)throws IOException{
try{ String linea = br.readLine();
while ( linea != null){
System.out.println(linea);
linea = br.readLine();
}
}catch(IOException e){
System.out.println("Error E/S: "+e);
}
}
}
Esta en la clase documento, que no se si tengo mal leer y escribir en fichero, deberia tener en lectura una entrada de tipo descripcion? y siguiendo..
import java.util.*;
import java.io.*;
import java.lang.*;
public class Documento
{
//atributos
private String nombre;
private int fechaMes;
private int fechaDia;
// coleccion de obejtos de tipo documento
ArrayList<LineaDocumento> linea=new ArrayList<LineaDocumento>();
//Metodos de acceso
public String getNombre (){
return nombre;
}
public int getFechaMes (){
return fechaMes;
}
public int getFechaDia (){
return fechaDia;
}
public ArrayList getLinea(){
return linea;
}
public void setDocumento(String nombre){
this.nombre = nombre;
}
public void setFechaMes(int fechaMes){
this.fechaMes = fechaMes;
}
public void setFechaDia(int fechaDia){
this.fechaDia = fechaDia;
}
// Constructor con 3 parametros , uno por atributos , menos para lineas que se creará una vacia
public Documento (String nombre, int fechaMes, int fechaDia){
this.nombre = nombre;
this.fechaMes = fechaMes;
this.fechaDia = fechaDia;
this.linea = null;
}
public Documento(){
this.nombre = " vacio";
this.fechaMes = 0;
this.fechaDia = 0;
this.linea = null;
}
//Constructor copia
//Metodo ToString
public String toString(){
String mensaje = "Nombre " + nombre + "dia mes y linea " + fechaDia + fechaMes + linea;
return mensaje;
}
/* guardar(writer) que recibe un objeto de la jerarquia Writer y escribe una linea de texto por cada atributo y finalmente el atrinuto lineas
llamando a guardar (writer) de la clase LineaDocumento*/
public void escribirEnFicheroe (BufferedWriter bw)throws IOException{
try {bw.write(nombre);
bw.newLine();
bw.write(fechaDia);
bw.newLine();
bw.write(fechaMes);
bw.newLine();
LineaDocumento resto;
resto = new LineaDocumento();
while (linea != null){
resto.escribirEnFichero();
}
bw.flush();
}catch (IOException e) {
System.out.println("Error E/S: " + e);
}
}
}
En este me quedo pillado no se seguir..