25 mayo, 2021

Quinta Evaluación Continua Java Avanzado

¡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.


No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!