Java - clase persona en java netbeas

 
Vista:

clase persona en java netbeas

Publicado por juan (4 intervenciones) el 30/12/2020 18:25:29
hola tengo una duda
tengo una clase llamada persona con los siguientes atributos nombre , apellido , direccion , telefono
y necesito guardar los datos ingresados sin perder los anteriores en un fichero txt. alguien sabe como puedo hacerlo?
alguien que me explique por favor soy nuevo en este lenguaje de programacion
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 2.980
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

clase persona en java netbeas

Publicado por Kabuto (778 intervenciones) el 31/12/2020 01:26:36
Puedes hacerlo con la clase BufferedWriter (que se usa junto a FileWriter).
De este modo, puedes elaborar los String que creas convenientes y escribirlos como lineas en un archivo de texto, con el nombre y ubicación que tu elijas.

Veamos un ejemplo simple.
Supongamos la típica clase Persona
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Persona {
 
	private String nombre;
	private String apellido;
	private String direccion;
	private String telefono;
 
	public Persona(String nombre, String apellido, String direccion, String telefono) {
		this.nombre = nombre;
		this.apellido = apellido;
		this.direccion = direccion;
		this.telefono = telefono;
	}
 
	public String getNombre() {
		return nombre;
	}
 
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
 
	public String getApellido() {
		return apellido;
	}
 
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
 
	public String getDireccion() {
		return direccion;
	}
 
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
 
	public String getTelefono() {
		return telefono;
	}
 
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
 
	@Override
	public String toString() {
		return "Persona [nombre=" + nombre + ", apellido=" + apellido
				+ ", direccion=" + direccion + ", telefono=" + telefono + "]";
	}
 
}

Con el método toString(), tengo ya un método que coge los datos de los atributos y construye un String con ellos.

Este String puedo sacarlo en pantalla, y también puedo guardarlo en un fichero de texto plano en disco.

Esto lo vamos a ver con el siguiente programa, donde pido datos de Persona, lo muestro en pantalla y además lo guardo en disco.

El guardado lo hago mediante un método separado para destacar mejor el código que se encarga de ese proceso, pero como puede verse, son solo unas pocas líneas.
Fíjate que para guardar en disco, tengo que indicarle mediante un String el nombre y ruta del archivo donde quiero guardarlo.
En mi caso, usando System.getProperty() le indico que pregunte al sistema operativo cuál es mi carpeta personal de usuario y con ello construyo una ruta que apunta a mi carpeta Mis Documentos y ahí se creará un archivo llamado personas.txt.
Pero podemos indicarle cualquier otra ruta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;
 
public class Escribir {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		char opcion = 's';
		do {
			System.out.println("\n\nNuevo registro de persona");
			System.out.print("Nombre: ");
			String nombre = teclado.nextLine();
			System.out.print("Apellido: ");
			String apellido = teclado.nextLine();
			System.out.print("Dirección: ");
			String direccion = teclado.nextLine();
			System.out.print("Teléfono: ");
			String telefono = teclado.nextLine();
			Persona persona = new Persona(nombre, apellido, direccion, telefono);
 
			System.out.println("\nDatos obtenidos:");
			System.out.println(persona);
 
			guardarEnTxt(persona);
 
			System.out.print("\n¿Registrar otra?(s/n): ");
			opcion = teclado.nextLine().toLowerCase().charAt(0);
		}while(opcion == 's');
 
		System.out.println("\n\t\tFIN DE PROGRAMA");
		teclado.close();
	}
 
	private static void guardarEnTxt(Persona persona) {
		//Guardo el txt en la carpeta Mis Documentos de mi usuario
		String ruta = System.getProperty("user.home")+"/documents/personas.txt";
 
		try {
			//el "escritor" lo construimos con un FileWriter que apunte a la ruta del archivo
			BufferedWriter escritor = new BufferedWriter(new FileWriter(ruta, true));
			/*
			 * Con TRUE le decimos que queremos que cada linea escrita se añada a lo que ya hay escrito.
			 * Si ponemos FALSE, o no ponemos nada, lo que hace es borrar lo que ya habia escrito
			 * anteriormente en el archivo cuando escribe una nueva línea.
			 */
			escritor.write(persona.toString()); //Escribimos datos de persona
			escritor.newLine(); //Escribimos un salto de línea.
			escritor.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
}

Si lo ejecuto y registro a un par de Persona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Nuevo registro de persona
Nombre: Kabuto
Apellido: Kabutez
Dirección: C\ Java nº 1
Teléfono: 656123490
 
Datos obtenidos:
Persona [nombre=Kabuto, apellido=Kabutez, direccion=C\ Java nº 1, telefono=656123490]
 
¿Registrar otra?(s/n): s
 
 
Nuevo registro de persona
Nombre: Xena
Apellido: Princesa Guerrera
Dirección: Pueblo de Cirra
Teléfono: No tiene
 
Datos obtenidos:
Persona [nombre=Xena, apellido=Princesa Guerrera, direccion=Pueblo de Cirra, telefono=No tiene]
 
¿Registrar otra?(s/n): n
 
		FIN DE PROGRAMA

Luego puedo ver que se ha creado un archivo de texto en la ruta que le he indicado y que contiene los String de los Persona que he creado.


imagen_2020-12-31_012342
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar