Título: Unir contenido de dos txt en un txt nuevo Publicado por: thebus4k en 9 Mayo 2020, 18:03 pm Hola a todos.
Tengo un problema en un programa que debe unir el contenido de dos archivos txt en un archivo nuevo. El programa que tengo es que me crea bien el archivo, pero no copia el contenido de los dos archivos iniciales. Código: import java.io.*; import javax.swing.JOptionPane; public class Ejercicio3{ public static void main(String[] args) { //Introducimos los datos String rutaFichero1=JOptionPane.showInputDialog("Indica la ruta del primer fichero"); String rutaFichero2=JOptionPane.showInputDialog("Indica la ruta del segundo fichero"); String rutaDestino=JOptionPane.showInputDialog("Indica la ruta donde quieres guardarlo"); //Creamos dos objetos File para que nos sea mas sencillo manejarlos File fichero1=new File(rutaFichero1); File fichero2=new File(rutaFichero2); //Troceamos el el nombre del primer fichero para que se quede sin extension String primerFichero=fichero1.getName().substring(0, fichero1.getName().length()-4); //Crear el nombre de salida del fichero String nombreFicheroFinal=primerFichero+"_"+fichero2.getName(); rutaDestino+=nombreFicheroFinal; File destino=new File(rutaDestino); UneFicheros(fichero1, fichero2, destino); } public static void UneFicheros (File fich1, File fich2, File destino){ try (BufferedReader br=new BufferedReader(new FileReader(fich1)); BufferedReader br2=new BufferedReader(new FileReader(fich2))){ int eleccion=-1; if(destino.exists()){ eleccion=JOptionPane.showConfirmDialog(null, "El fichero ya existe, ¿Quieres sobrescribir el fichero "+destino.getName()+"?", "Sobrescribir", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); } if(eleccion!=JOptionPane.CANCEL_OPTION){ /* * Lo creamos aquí, ya que si lo hacemos arriba * siempre existira porque se crea al abrir el Stream */ BufferedWriter bw=new BufferedWriter(new FileWriter(destino)); //Copiamos el contenido al fichero destino copiar(bw, br); copiar(bw, br2); } }catch(IOException e){ JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } } private static void copiar(BufferedWriter bw, BufferedReader br) throws IOException{ String linea=br.readLine(); while(linea!=null){ bw.write(linea); linea=br.readLine(); } } } Espero que alguien sepa ayudarme, un saludo. Título: Re: Unir contenido de dos txt en un txt nuevo Publicado por: EdePC en 9 Mayo 2020, 21:08 pm Saludos,
- Te falta cerrar tu Buffer: Cita de: Del libro adjunto, pág.: 159 Es importante ejecutar close() después de realizar la escritura; de esta manera nos aseguramos que se graba toda la información en el disco. Libro Aprende Java con más de 200 ejercicios (Luis José Sánchez González, 2016) https://www.academia.edu/36088785/Aprende_java_con_ejercicios Título: Re: Unir contenido de dos txt en un txt nuevo Publicado por: rub'n en 10 Mayo 2020, 04:23 am * Ligero cambio, y es verdad cierra los recursos asi como haces con BufferedReader dentro del try-with-resources
* Crea el fichero destino si no existe * Hardcodear las rutas asi es un fastidio, usa mejor JFileChooser Código
|