Buenas encontre la horna del zapato, justo lo que me pedian hacer en un video de mi curso. Asique avanze bastante. Voy a poner el codigo como muestra de gratitud a la informacion que me facilitaron, seguramente la pondre en practica tambien en la aplicacion. Saludos
Aunque en realidad el bucle del menu no esta bien hecho y se repite constantemente, por eso no esta del todo terminado algun codigo, estoy en ello y la clase producto no la incluyo porque no tiene nada de especial solo los contructores, getter , setter.
Cuando lo tenga hecho y funcione correctamente lo colgare, editando para que se quede el final. Y por si le puede servir a alguien
Modificacion , bucle funcional:
package pruebalibreceac;
/**
*
* @author ibai
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Main {
static int num;
static Scanner sc
= new Scanner
(System.
in); static ArrayList<Producto> lproductos = new ArrayList<Producto>();
do{
System.
out.
println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto." + "\n4-Leer archivo.\n5-Salir.");
num= sc.nextInt();
}while(num < 0 || num > 5);
do{
switch(num){
case 1:
System.
out.
println("Ingrese el nombre y luego el peso del nuevo producto.");
creaProducto();
if(guardaProducto()){
System.
out.
println("Fichero almacenado correctamente"); }
else{
System.
out.
println("Error guardando fichero"); }
do{
System.
out.
println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto." + "\n4-Leer archivo.\n5-Salir");
num= sc.nextInt();
}while(num<0 || num>5);
break;
case 2:
System.
out.
println("Estos son los productos existentes.");
muestraContenido("C:\\Users\\ibai\\Documents\\NetBeansProjects\\Programa1\\pruebaLibre\\Productos.txt");
do{
System.
out.
println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto." + "\n4-Leer archivo.\n5-Salir");
num= sc.nextInt();
}while(num<0 || num>5);
break;
case 3:
System.
out.
println("Guardando productos desde archivo externo.");
do{
System.
out.
println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto." + "\n4-Leer archivo.\n5-Salir");
num= sc.nextInt();
}while(num<0 || num>5);
break;
case 4:
System.
out.
println("Visualizando productos desde archivo externo.");
do{
System.
out.
println("\n1-Introducir nuevo producto.\n2-Visualizar productos.\n3-Guardar archivo de texto." + "\n4-Leer archivo.\n5-Salir");
num= sc.nextInt();
}while(num<0 || num>5);
break;
}
}while(num != 5);
}
private static void creaProducto(){ //case 1
Scanner sca
= new Scanner
(System.
in);
Producto p1 = new Producto(1,"Arroz", (float) 30.00);
Producto p2 = new Producto(2,"Maíz", (float) 56.89);
Producto p3 = new Producto();
p3.setDescripcion(sca.nextLine());
p3.setPeso(sca.nextFloat());
//Añadir setter de p3 introducido por teclado
lproductos.add(p1);
lproductos.add(p2);
lproductos.add(p3);
lproductos.add(new Producto());
}
private static boolean guardaProducto(){ //case 1
boolean ok = false;
try{
String nombreFichero
= "Productos.txt";
while(it.hasNext()){
Producto p = (Producto) it.next();
pw.println(p.getCodigo());
pw.println(p.getDescripcion());
pw.println(p.getPeso());
}
pw.close();
ok = true;
}
System.
out.
println("Error: "+ e.
getMessage()); }
return (ok);
}
//case 2
while((nombreFichero = b.readLine())!=null) {
System.
out.
println(nombreFichero
); }
b.close();
}
}