Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] modificar archivo CSV Java

Estas en el tema de modificar archivo CSV Java en el foro de Java en Foros del Web. Hola chicos tengo un problea y es que necesito que mi programa de un campo de texto me edite la información en el CSV aqui ...
  #1 (permalink)  
Antiguo 23/03/2018, 10:03
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Pregunta modificar archivo CSV Java

Hola chicos tengo un problea y es que necesito que mi programa de un campo de texto me edite la información en el CSV aqui os dejo una parte de mi codigo a ver si me podéis ayudar.... Muchísimas gracias de antemano.

Código HTML:
@FXML private void edit(ActionEvent event) {
        clientes cliente = new clientes();
        cliente.nombre.set(nombre.getText());
        cliente.cif.set(cif.getText());
        cliente.direccion.set(direccion.getText());
        cliente.numero.set(numero.getText());
        cliente.poblacion.set(poblacion.getText());
        cliente.provincia.set(provincia.getText());
        cliente.pais.set(pais.getText());
        cliente.cp.set(cp.getText());
        cliente.telefono.set(telefono.getText());
        clientes2.set(posicionClienteEnTabla, cliente);
        try
        {
            fichero = new FileWriter("C:\\jony\\Clientes.csv",true);
            pw = new PrintWriter(fichero);
            String aux = cliente.getNombre()+ ";" + cliente.getTelefono() + ";" + cliente.getCif()+";"+cliente.getDireccion()+";"+cliente.getNumero()
            +";"+cliente.getPais()+";"+cliente.getPoblacion()+";"+cliente.getProvincia()+";"+cliente.getCp();
                pw.println(aux);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
           // Nuevamente aprovechamos el finally para 
           // asegurarnos que se cierra el fichero.
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }
}
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #2 (permalink)  
Antiguo 24/03/2018, 16:18
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: modificar archivo CSV Java

Tu código parece bien encaminado pero creo que no se usa println sino write.

el csv se escribe con secuencias de textos y tabulaciones para separar las columnas, y saltos de línea para separar las filas.

Por otra parte no veo de donde se obtiene la variable posicionClienteEnTabla.


empieza buscando por aquí

https://www.google.es/search?q=edit+...hrome&ie=UTF-8

a ver si rascas algo. Y si no encuentras solución lo seguimos viendo aquí
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Última edición por Fuzzylog; 25/03/2018 a las 02:49
  #3 (permalink)  
Antiguo 25/03/2018, 08:45
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

No encuentro la solucion ya que probe con varias cosas de las que me mandaste que vi y nada una de las cosas que probe fue esta:
<HTML>CSVReader reader = new CSVReader(new FileReader("C:\\niks\\Clientes.csv"), ';');
List<String[]> csvBody = reader.readAll();
cliente.nombre.set(nombre.getText());
cliente.cif.set(cif.getText());
cliente.direccion.set(direccion.getText());
cliente.numero.set(numero.getText());
cliente.poblacion.set(poblacion.getText());
cliente.provincia.set(provincia.getText());
cliente.pais.set(pais.getText());
cliente.cp.set(cp.getText());
cliente.telefono.set(telefono.getText());
//clientes2.set(posicionClienteEnTabla, cliente);
for(int i=0; i<csvBody.size(); i++){
String[] strArray = csvBody.get(i);
for(int j=0; j<strArray.length; j++){
if(strArray[j].equalsIgnoreCase(nombre.getText()+cif.getText()+d ireccion.getText()+numero.getText()+poblacion.getT ext()+provincia.getText()
+pais.getText()+cp.getText()+telefono.getText())){ //String to be replaced
csvBody.get(i)[j] = nombre.getText()+cif.getText()+direccion.getText() +numero.getText()+poblacion.getText()+provincia.ge tText()
+pais.getText()+cp.getText()+telefono.getText(); //Target replacement
}
}
}
reader.close();

// Write to CSV file which is open
CSVWriter writer = new CSVWriter(new FileWriter("C:\\niks\\Clientes.csv"), ';');
writer.writeAll(csvBody);
writer.flush();
writer.close();*/</HTML>

Aquí te dejo donde y porque se ultiliza la de clienteSeleccionado.

<HTML>
private int posicionClienteEnTabla;
private void ponerClienteSeleccionado() {
final clientes cliente = getTablaClientesSeleccionados();
posicionClienteEnTabla = clientes2.indexOf(cliente);

if (cliente != null) {

// Pongo los textFields con los datos correspondientes
nombre.setText(cliente.getNombre());
cif.setText(cliente.getCif());
direccion.setText(cliente.getDireccion());
numero.setText(cliente.getNumero());
poblacion.setText(cliente.getPoblacion());
provincia.setText(cliente.getProvincia());
pais.setText(cliente.getPais());
cp.setText(cliente.getCp());
telefono.setText(cliente.getTelefono());

// Pongo los botones en su estado correspondiente
//edit.setDisable(false);
//delete.setDisable(false);
save.setDisable(true);

}
}
</HTML>
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #4 (permalink)  
Antiguo 25/03/2018, 08:48
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

si lo dejo asi:
@FXML private void edit(ActionEvent event) {
clientes cliente = new clientes();

cliente.nombre.set(nombre.getText());
cliente.cif.set(cif.getText());
cliente.direccion.set(direccion.getText());
cliente.numero.set(numero.getText());
cliente.poblacion.set(poblacion.getText());
cliente.provincia.set(provincia.getText());
cliente.pais.set(pais.getText());
cliente.cp.set(cp.getText());
cliente.telefono.set(telefono.getText());
clientes2.set(posicionClienteEnTabla, cliente);
}
Funciona pero no me lo guarda en el CSV la modificación ya que es normal porque no hay un printwriter.
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #5 (permalink)  
Antiguo 25/03/2018, 13:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: modificar archivo CSV Java

pero no te sale ningún mensaje de error en los logs o en la consola de comandos?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 25/03/2018, 13:47
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

no ninguno he hecho debug y tampoco nada en claro supuestamente todo funciona correctamente pero nada de nada
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #7 (permalink)  
Antiguo 25/03/2018, 14:49
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: modificar archivo CSV Java

Pues nada, más deberes:

http://viralpatel.net/blogs/java-read-write-csv-file/
https://www.csvreader.com/java_csv_samples.php
https://www.callicoder.com/java-read...e-commons-csv/
https://coderanch.com/t/559466/java/...date-CSV-files
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Última edición por Fuzzylog; 25/03/2018 a las 15:08
  #8 (permalink)  
Antiguo 25/03/2018, 16:48
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

Estos foros ya los habia visto y aun asi no pude sacar nada claro , muchisimas gracias por tu ayuda lo seguire intentando hasta encontrar la solucion, si se te ocurre al mas te estaria muy agradecido.
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #9 (permalink)  
Antiguo 26/03/2018, 01:37
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: modificar archivo CSV Java

A ver, el problema puede deberse a varias cosas.

1º los datos que recuperas vienen vacíos.
2º el fichero que intentas modificar está protegido contra escritura.
3º te falta algún paso por realizar
etc...

Tienes que ir probando diferentes acciones para comprobar que todo está correcto

1º buscar el fichero en disco y leerlo
2º modificar documento con datos hardcodeados (String test = "mi contenido"; // por ejemplo).
3º guardar un fichero en disco (primero si no existe y luego si existe y es diferente del que quieres guardar)
... y lo que se te ocurra

Así conseguirás acotar el problema y averiguar qué te sucede.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #10 (permalink)  
Antiguo 26/03/2018, 07:11
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

Todo esto lo realice y creo que el problema viene que el paso que me falta es recorrer todo el archivo y el campo seleccionado modificar lo por un dato nuevo pero esto en javafx no se como hacerlo es decir no se como plantearlo porque lee y escribe y guarda bien
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #11 (permalink)  
Antiguo 26/03/2018, 07:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: modificar archivo CSV Java

Creo que aquí está hecho lo mismo que quieres hacer tú

http://frosch95.github.io/SmartCSV.fx/
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #12 (permalink)  
Antiguo 26/03/2018, 18:51
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años
Puntos: 0
Respuesta: modificar archivo CSV Java

bueno ya lo tengo, gracias por tu ayuda y por preocuparte aunque lo hice de otra forma pero funciona y sirve, dejo la solución por si a alguien mas le sirve.

Ahora ya puedo dormir tranquilo hahahahahah
@FXML private void edit(ActionEvent event){
clientes cliente = new clientes();


String line = null;
File f1 = new File("C:\\niks\\Clientes.csv");
try {
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
while((line = br.readLine()) !=null) {
cliente.nombre.set(nombre.getText());
cliente.cif.set(cif.getText());
cliente.direccion.set(direccion.getText());
cliente.numero.set(numero.getText());
cliente.poblacion.set(poblacion.getText());
cliente.provincia.set(provincia.getText());
cliente.pais.set(pais.getText());
cliente.cp.set(cp.getText());
cliente.telefono.set(telefono.getText());
//clientes2.add(posicionClienteEnTabla, cliente);
clientes2.set(posicionClienteEnTabla, cliente);
}
fr.close();
br.close();
FileWriter fw = new FileWriter(f1);
BufferedWriter bw= new BufferedWriter(fw);
for(clientes s: clientes2) {
bw.write(s.getNombre()+";"+s.getTelefono()+";"+s.g etCif()+";"+s.getDireccion()+";"+s.getNumero()+";" +s.getProvincia()+";"+s.getPoblacion()+
";"+s.getCp()+";"+s.getPais());
bw.flush();
bw.close();
}
} catch (Exception ex) {

ex.printStackTrace();
}
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());

Etiquetas: javafx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.