|
563
|
Programación / Java / Re: Ayuda con lectura y escritura en ficheros Java
|
en: 2 Mayo 2019, 19:52 pm
|
Por ahí va la cosa y cuando lo pongas, usa GeShi en modo bash  package com.ficheros.foro; import javax.swing.*; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.logging.Logger; /** * autor @rub´n * https://foro.elhacker.net/java/ayuda_con_lectura_y_escritura_en_ficheros_java-t495247.0.html */ public class RelPerCen { private static final Logger LOGGER = Logger.getLogger(RelPerCen.class.getSimpleName()); private static final String MATCHES = "| |"; private static final String REEMPLAZO = "|" + LocalDate. MIN. toString() + "|"; private static final String REPLACE = "[\\]\\[]"; public static List <String > leerFichero (final String nombre ) { final List<String> list = new ArrayList<>(); LOGGER.info("Raiz de proyecto" + Paths.get(".").toAbsolutePath().toString()); try (final BufferedReader br = Files. newBufferedReader(Paths. get(nombre ), Charset. defaultCharset())) { LOGGER.info("Leyendo el fichero de empleados\n"); final StringBuilder sb = new StringBuilder(); while (Objects.nonNull(line = br.readLine())) { if (!line.contains(MATCHES)) { final String s = line. replace(MATCHES, REEMPLAZO ); sb.append(s) . append(System. lineSeparator()); } if (line.contains(MATCHES)) { final String s = line. replace(MATCHES, REEMPLAZO ); sb.append(s) . append(System. lineSeparator()); } } /** * Despues del while */ list.add(sb.toString()); JOptionPane. showMessageDialog(null, "No existe el fichero"); LOGGER.severe("No existe el fichero " + ex.toString()); } return list; } public static void escribir (final List <String > empleado, final String nombreFichero ) { try (final BufferedWriter bw = Files. newBufferedWriter(Paths. get(nombreFichero ))) { bw.write(empleado.toString() .replaceAll(REPLACE, "")); LOGGER.severe("Error al escribir fichero " + ex.toString()); } } public static void main (String... blablablablabla) { final RelPerCen r = new RelPerCen(); /** * Leer el fichero completamente */ final List<String> ficheroLiedo = r.leerFichero("ficheroEmpleados.txt"); /** * Crear el fichero con las fechas de cese en LocalDate.MIN */ r.escribir(ficheroLiedo, "ficheroEmpleadosConFechaDeCese.txt"); } }
Salida actual, falta formateoTítulo: PERSONAL DEL CENTRO Autor: Aplicación Séneca, CONSEJERÍA DE EDUCACIÓN Y DEPORTE, Junta de Andalucía Fecha de creación: 30/04/19 - 10:01 ---------------------------------------+----------------------------------------+-------------------------+-------------+---------+----------- Empleado/a |Puesto |Fecha de toma de posesión|Fecha de cese|Evaluador|Coordinador ---------------------------------------+----------------------------------------+-------------------------+-------------+---------+----------- Aldridge Torres, Pérez |Física y Química P.E.S. |01/09/2012 |-999999999-01-01|Sí |No Álvarez Ortega, María Dolores |Pedagogía Terapeutica Eso |01/09/2005 |-999999999-01-01|No |No Baquero Reyes, Cristina |Biología y Geología P.E.S. |18/02/2019 |30/04/2019 |No |No Bermúdez Iñiguez, José Luis |Geografía e Historia P.E.S. |01/09/2018 |30/06/2019 |No |No Beswick Algarrada, Cristina |Orientación Educativa P.E.S. |01/09/2008 |-999999999-01-01|No |No Blanco Borrego, Mirian |Física y Química P.E.S. |01/09/2004 |-999999999-01-01|No |Sí Borrego Alcaide, Miguel Ángel |Lengua Castellana y Literatura P.E.S. |01/09/2018 |30/06/2019 |No |No Butrón Cobo, Lucía |Administración de Empresas P.E.S. |25/09/2018 |09/03/2019 |No |No
|
|
|
568
|
Programación / Java / Re: Proyectos en NetBeans problemas al ejecutar
|
en: 1 Mayo 2019, 21:29 pm
|
Saludos,
- Como rub'n ya había dicho en un post anterior, tienes que ir a Run > Clean and Build para limpiar y actualizar tu proyecto.
Tal cual doc, pero me he dado cuenta que con 14 a 15 años, nos tienen que repetir las cosas unass cuántas veces, y ni hablar de 30 
|
|
|
569
|
Programación / Java / Re: Formateo dinámico en JTextField
|
en: 1 Mayo 2019, 20:34 pm
|
- Primero obtén el valor del JTextField
- Conviértelos a un array lista lo que quieras, que sea un array o lista XD
- Luego recorres esa lista
- Cuentas 2 posiciones y le setteas un " "
 package com.prueba.foro; import javax.swing.*; import java.awt.*; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * @autor rub´n */ public class FormatearJTextField extends JFrame { private final JLabel jLabelTitulo = new JLabel("Introduce 10 números, enter para validar"); private static final String ESPACIOS = "\\s+"; private static final String LETRAS = "[a-zA-Z]+"; private static final String NUMEROS_HASTA_10 = "[0-9]{10}"; private static final String NUMEROS = "[0-9]+"; public FormatearJTextField() { super("Formatear JTextField 00 00 00..."); configureLayouts(); configureJFrame(); } private void configureJFrame() { add(mainJPanel); pack(); setLocationRelativeTo(null); setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); setVisible(true); } private void configureLayouts() { mainJPanel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); mainJPanel. add(Box. createVerticalStrut(20)); mainJPanel. add(Box. createVerticalStrut(20)); listenerJTextField(); } /** * Listener del JTextField */ private void listenerJTextField() { jTextField.addActionListener(e -> { final String valor = jTextField. getText(); final Predicate<String> predicate = p -> p.replaceAll(ESPACIOS,"") .matches(NUMEROS_HASTA_10); if (validar(valor, predicate)) { JOptionPane. showMessageDialog(null, "Valores correctos"); final char[] chars = valor.toCharArray(); String sResultado = IntStream. range(0, chars. length) .mapToObj(index -> chars[index]) .collect(Collectors.toList()) .toString() .replaceAll(ESPACIOS, "")//quitar espacios en blanco .replaceAll(",", "")//remover , .replaceAll("\\[", "")//remover [ .replaceAll("\\]", "");//remover ] final StringBuilder sb = new StringBuilder(); for (int f = 0; f < sResultado.length() - 1; f += 2) { sb.append(sResultado.substring(f, (f + 2)).concat(" ")); } jLabel.setText(""); jLabel.setText("Resultado: " + sb.toString()); jTextField.setText(sb.toString()); } else { final String sError = valor. replaceAll(ESPACIOS, ""); if (validar(sError, p -> p.matches(LETRAS))) { JOptionPane. showMessageDialog(null, "Valores invalidos"); } else if(validar(sError, p -> p.matches(NUMEROS))) { JOptionPane. showMessageDialog(null, "cantidad de numeros es: " + sError. length()); } else { JOptionPane. showMessageDialog(null, "Valores invalidos"); } } }); } /** * Validador * * @param value valor obtenido del JTextField * @return boolean */ private boolean validar (final String value, final Predicate <String > predicate ) { return predicate.test(value); } public static void main (String... blabla) { new Thread(FormatearJTextField ::new). start(); } }

|
|
|
|
|
|
|