Hola que tal de nuevo estaba haceindo el metodo de modificar con tu me lo habias explicado pero al momento de darle que si al modificar me parace este error
java.lang.NullPointerException
at java.io.Writer.write(Writer.java:157)
at CrearFile2.setModificar(CrearFile2.java:237)
at MenuV2.setMenuV2(MenuV2.java:50)
at MenuBueno.main(MenuBueno.java:12)
y despues se sale y me borra todo lo que tengo en el archivo no entiendo el porque ya revise todo y no le encuentro el error
import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
public class Modificar {
public Modificar()
{}
File archivo= new File("C:\\Prueba\\EquipoV.txt");
LeerMostrar5 lm5 = new LeerMostrar5();
public void setModificar()
{
if (archivo.exists())
{
String clave = JOptionPane.showInputDialog("Dame clave a modificar");
try {
ArrayList<String> lineas = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader(archivo));
String linea = br.readLine();
while (linea != null)
{
if (linea.startsWith(clave))
{
int confirmar = JOptionPane.showConfirmDialog(null, "Se ha encontrado:\n"
+ linea + "\n¿Seguro que quiere modificar?", "Confirmar Modificacion", JOptionPane.YES_NO_OPTION);
if (confirmar == JOptionPane.YES_OPTION)
{
lineas.add(getLineaModificada(linea));
}
else//No quiere modificar
lineas.add(linea);
}
else//Linea no coincide con clave
lineas.add(linea);
linea = br.readLine();
}
br.close();
//Guarda los cambios en el archivo.
if (archivo.delete())
{
BufferedWriter bw = new BufferedWriter(new FileWriter(archivo, true));
for (String line: lineas)
{
bw.write(line);
bw.newLine();
}
bw.close();
JOptionPane.showMessageDialog(null, "Los cambios se han guardado");
}
else//Este en caso de no poder modificar
{
JOptionPane.showMessageDialog(null, "No se ha podido modificar el archivo: " + archivo.getAbsolutePath());
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e.getLocalizedMessage());
}
}
else//No existe archivo
JOptionPane.showMessageDialog(null, "No existe fichero: " + archivo.getAbsolutePath());
}
private String getLineaModificada(String linea)
{
String lineaModificada = null;//Esta linea devuelve las modificaciones
if (linea.endsWith("Jugador"))//La linea pertenece a la clase Jugadores
{
String[] datosJugador = linea.split("\\|");
//Construimos un Jugador con los datos obtenidos
Jugadores jugador = new Jugadores();
jugador.setMatricula(Integer.parseInt(datosJugador[0]));
jugador.setNombre(datosJugador[1]);
jugador.setAp(datosJugador[2]);
jugador.setAm(datosJugador[3]);
jugador.setNumeroCa(Integer.parseInt(datosJugador[4]));
jugador.setPosicion(datosJugador[5]);
jugador.setEstatus(datosJugador[6]);
jugador.setSexo(datosJugador[7]);
//Preguntamos por matricula
int respuesta = JOptionPane.showConfirmDialog(null, "Matricula Actual:\n" + jugador.getMatricula() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)//SÍ quiere modificar
jugador.setMatricula(lm5.getMatricula2());
//Preguntamos por nombre
respuesta = JOptionPane.showConfirmDialog(null, "Nombre Actual:\n" + jugador.getNombre() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setNombre(lm5.getNombreJ());
//Apellido Paterno
respuesta = JOptionPane.showConfirmDialog(null, "Apellido Paterno Actual:\n" + jugador.getAp() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setAp(lm5.getApe());
//Apellido Materno
respuesta = JOptionPane.showConfirmDialog(null, "Apellido Materno Actual:\n" + jugador.getAm() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setAm(lm5.getAma());
//Numero Camiseta
respuesta = JOptionPane.showConfirmDialog(null, "Numero Camiseta Actual:\n" + jugador.getNumeroCa() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setNumeroCa(lm5.getNumC());
//Posicion
respuesta = JOptionPane.showConfirmDialog(null, "Posicion Actual:\n" + jugador.getPosicion() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setPosicion(lm5.getPosic());
//Status
respuesta = JOptionPane.showConfirmDialog(null, "Estado Actual:\n" + jugador.getEstatus() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setEstatus(lm5.getEstatus1());
//Sexo
respuesta = JOptionPane.showConfirmDialog(null, "Sexo Actual:\n" + jugador.getSexo() + "\n¿Modificar?",
"Modificar Jugador", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
jugador.setSexo(lm5.getSex1());
lineaModificada = jugador.toString();
}
else if (linea.endsWith("Personal"))//La linea pertenece a la clase Personal
{
String[] datosPersonal = linea.split("\\|");
Personal p = new Personal();
p.setClave(Integer.parseInt(datosPersonal[0]));
p.setNombre(datosPersonal[1]);
p.setAp(datosPersonal[2]);
p.setAm(datosPersonal[3]);
p.setPuesto(datosPersonal[4]);
p.setEspecialidad(datosPersonal[5]);
p.setTiempoE(Integer.parseInt(datosPersonal[6]));
p.setSexo(datosPersonal[7]);
int respuesta = JOptionPane.showConfirmDialog(null, "Clave Actual:\n" + p.getClave() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)//SÍ quiere modificar
p.setClave(lm5.getClave());
//Preguntamos por nombre
respuesta = JOptionPane.showConfirmDialog(null, "Nombre Actual:\n" + p.getNombre() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setNombre(lm5.getNombrep());
//Apellido Paterno
respuesta = JOptionPane.showConfirmDialog(null, "Apellido Paterno Actual:\n" + p.getAp() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setAp(lm5.getAp2());
//Apellido Materno
respuesta = JOptionPane.showConfirmDialog(null, "Apellido Materno Actual:\n" + p.getAm() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setAm(lm5.getAm2());
//Puesto
respuesta = JOptionPane.showConfirmDialog(null, "Puesto Actual:\n" + p.getPuesto() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setPuesto(lm5.getPuesto1());
//Especialidad
respuesta = JOptionPane.showConfirmDialog(null, "Especialidad Actual:\n" + p.getEspecialidad() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setEspecialidad(lm5.getEsp());
//Tiempo en la empresa
respuesta = JOptionPane.showConfirmDialog(null, "Estado Actual:\n" + p.getTiempoE() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setTiempoE(lm5.getTiempoe());
//Sexo
respuesta = JOptionPane.showConfirmDialog(null, "Sexo Actual:\n" + p.getSexo() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
p.setSexo(lm5.getSex2());
lineaModificada = p.toString();
}
else if (linea.endsWith("Proveedor"))//La linea pertenece a la clase Proveedores
{
String[] datosProveedores = linea.split("\\|");
Proovedores pr = new Proovedores();
pr.setNombre(datosProveedores[0]);
pr.setDireccion(datosProveedores[1]);
pr.setCiudad(datosProveedores[2]);
pr.setEmail(datosProveedores[3]);
pr.setTelefono(datosProveedores[4]);
//Preguntamos por Nombre
int respuesta = JOptionPane.showConfirmDialog(null, "Nombre Actual:\n" + pr.getNombre() + "\n¿Modificar?",
"Modificar Personal", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)//SÍ quiere modificar
pr.setNombre(lm5.getNombrePr());
//Direccion
respuesta = JOptionPane.showConfirmDialog(null, "Direccion Actual:\n" + pr.getDireccion() + "\n¿Modificar?",
"Modificar Proveedores", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
pr.setDireccion(lm5.getDirecpr());
//Ciudad
respuesta = JOptionPane.showConfirmDialog(null, "Ciudad Actual:\n" + pr.getCiudad() + "\n¿Modificar?",
"Modificar Proveedores", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
pr.setCiudad(lm5.getCiudad1());
//Email
respuesta = JOptionPane.showConfirmDialog(null, "Email Actual:\n" + pr.getEmail() + "\n¿Modificar?",
"Modificar Proveedores", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
pr.setEmail(lm5.getEmail());
//Telefono
respuesta = JOptionPane.showConfirmDialog(null, "Telefono Actual:\n" + pr.getTelefono() + "\n¿Modificar?",
"Modificar Proveedores", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION)
pr.setTelefono(lm5.getTelefono());
lineaModificada = pr.toString();
}
return lineaModificada;//Finalizado el metodo, esta linea contendrá los datos de un Jugador, o un Proveedor o un Personal
}
}