¡Buen día, coders! En esta oportunidad vamos a resolver una examen que nos envió un seguidor de la página. El examen trata sobre Manejo de Archivos, Uso de las clases File, FileReader, BufferedReader y PrintWriter, Les dejaré la solución a este examen y cualquier duda que tengan en la sección de comentarios.
PROBLEMA
Cree un bloc de notas similar a lo que se muestra en imagen, que permita leer y escribir archivos de textos. El usuario debe poder abrir y guardar el archivo en el directorio.
SOLUCIÓN
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Practica extends JFrame { /** * */ private static final long serialVersionUID = 1019431109704390787L; // Declaración de variables globales private JTextField txtField; private JTextArea txtArea; private JScrollPane scrollPane; private JButton btnGuardar, btnAbrir; // Constructor public Practica() { // Establecemos el título de nuestra aplicación super("Bloc de notas"); // Eliminamos el layout (le decimos que nos deje // decidir la posición y el tamaño de los componentes) setLayout(null); // Caja de texto txtField = new JTextField("Código del alumno"); txtField.setBounds(15, 10, 200, 30); txtField.setEnabled(false); add(txtField); // Área de texto txtArea = new JTextArea(); txtArea.setBounds(10, 50, 600, 300); add(txtArea); // Panel de desplazamiento scrollPane = new JScrollPane(txtArea); scrollPane.setBounds(15, 53, 550, 350); add(scrollPane); // Botones btnAbrir = new JButton("Abrir"); btnAbrir.setBounds(570, 50, 100, 25); add(btnAbrir); btnGuardar = new JButton("Guardar"); btnGuardar.setBounds(570, 80, 100, 25); add(btnGuardar); // Al hacer clic en el botón "Guardar" btnGuardar.addActionListener(new ActionListener() { // implementamos // una clase anónima definida como argumento @Override public void actionPerformed(ActionEvent e) { // Implementamos // el método de la interfaz // Creamos un JFileChooser para seleccionar un archivo JFileChooser abre = new JFileChooser(""); // Muesra el cuadro de dialogo de selector de archivos int returnVal = abre.showDialog(null, "Guardar"); if (returnVal == JFileChooser.APPROVE_OPTION) { // Si hizo clic en guardar // Obtengo la ruta donde se guardará el archivo String ruta = abre.getSelectedFile().getPath(); try { PrintWriter salida = new PrintWriter(ruta + ".txt"); // Crea el archivo salida.println(txtArea.getText()); // Escribimos en el archivo salida.close(); // Cerramos para liberar los recursos } catch (FileNotFoundException fnfe) { System.out.println("Error al abrir el archivo: " + fnfe.getMessage()); } catch (Exception ex) { System.out.println("Error: " + ex.getMessage()); } } } }); // Al hacer clic en el botón "Abrir" btnAbrir.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Creamos un JFileChooser para seleccionar un archivo JFileChooser abre = new JFileChooser(); // Le decimos que queremos que muestre archivos y carpetas abre.setFileSelectionMode(JFileChooser.FILES_ONLY); // Muestra el cuadro de dialogo de selector de archivos int result = abre.showOpenDialog(null); // Si canceló la selección if (result == JFileChooser.CANCEL_OPTION) return; // Cerramos el cuadro de selección // Si seleccionó un archivo, retorna el archivo seleccionado File file = abre.getSelectedFile(); if (file.exists()) { // Si el archivo existe if (file.isFile()) { // Si es un archivo try { // Abrimos el archivo BufferedReader br = new BufferedReader(new FileReader(file)); StringBuffer buffer = new StringBuffer(); String text; txtArea.setText(""); // Limpiamos la pantalla while ((text = br.readLine()) != null) // Leemos el contenido buffer.append(text + "\n"); // Lo almacenamos en un buffer txtArea.append(buffer.toString()); // Mostramos en pantalla } catch (IOException e1) { JOptionPane.showMessageDialog(null, "Error en el archivo", "Error", JOptionPane.ERROR_MESSAGE); } } else if (file.isDirectory()) { // Si es un directorio String listado[] = file.list(); // Recuperamos el contenido txtArea.append("\n\nContenido del directorio:\n"); for (int i = 0; i < listado.length; i++) // Recorremos el listado txtArea.append(listado[i] + "\n"); // Mostramos en pantalla } else { JOptionPane.showMessageDialog(null, "No existe", "Error", JOptionPane.ERROR_MESSAGE); } } } }); } // Método que lanza la aplicación public static void main(String[] ar) { Practica form = new Practica(); form.setBounds(0, 0, 700, 500); form.setVisible(true); } } |
RESULTADO
DESARROLLO TUS ALGORITMOS 🔥🔥
✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.
Cuenta Dcoder para más ejercicios de programación
Blog para novedades de programación
Tienda online para más recursos de programación
No hay comentarios, ¡cuéntame algo!
Me gustaría saber tu opinión. ¡Saludos!