Autor
|
Tema: Unir contenido de dos txt en un txt nuevo (Leído 3,630 veces)
|
thebus4k
Desconectado
Mensajes: 39
|
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.
|
|
|
En línea
|
|
|
|
EdePC
|
Saludos, - Te falta cerrar tu Buffer: 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
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
* 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 public class Ejercicio3 { public static void main (String[] args ) { //Harcodear la ruta no esta bien, evitar en lo posible a menos que sea una ruta fija siempre //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 //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(); //invocando a .replaceAll() quitando null en caso que no coloquen nombre de Archivos rutaDestino += nombreFicheroFinal.replace("null", ""); //ruta escrita por el usuario File destino = new File(rutaDestino. replaceAll("null", "")); uneFicheros(fichero1, fichero2, destino); } public static void uneFicheros (File fich1, File fich2, File destino ) { int eleccion = -1; if (destino.exists()) { eleccion = JOptionPane. showConfirmDialog(null, "El fichero ya existe, ¿Quieres sobrescribir el fichero " + destino. getName() + "?", "Sobrescribir", } /** * creando el fichero destino si no existe */ Files.createFile(destino.toPath()); /* * Lo creamos aquí, ya que si lo hacemos arriba * siempre existira porque se crea al abrir el Stream */ copiar(br, br2, destino.toPath()); } } } //Recorremos el Stream para hacer una reduccion en String con el separador del sistema String lines = br. lines(). collect(Collectors. joining(System. lineSeparator())); String lines2 = br2. lines(). collect(Collectors. joining(System. lineSeparator())); //escribimos la concatenacion de ambos String bw.write(lines.concat(lines2)); ex.printStackTrace(); } } }
|
|
« Última modificación: 10 Mayo 2020, 04:32 am por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema al unir con el virtualdub mod... de nuevo
Multimedia
|
castlevania.esp
|
0
|
1,427
|
28 Enero 2007, 21:57 pm
por castlevania.esp
|
|
|
Un nuevo troyano basado en Android y con contenido porno se pasea por los ...
Noticias
|
wolfbcn
|
0
|
1,999
|
16 Septiembre 2010, 13:18 pm
por wolfbcn
|
|
|
Programa para crear un fichero nuevo al q s le añada el texto contenido en otros
Scripting
|
tenteyu
|
0
|
1,965
|
22 Marzo 2012, 23:47 pm
por tenteyu
|
|
|
TorrentES.pw, nace un nuevo buscador de torrent especializado en contenido en...
Noticias
|
wolfbcn
|
0
|
1,883
|
11 Enero 2016, 21:46 pm
por wolfbcn
|
|
|
Amazon se inventa un nuevo 'Black Friday' solo para contenido digital
Noticias
|
wolfbcn
|
0
|
1,588
|
29 Diciembre 2016, 02:04 am
por wolfbcn
|
|