Este es mi código. En él, viene escrito el enunciado
Código:
import java.io.*;
import javax.swing.JOptionPane;
/**
*
Se quiere crear una clase llamada MezclaFicheros en la que se van
a crear dos ficheros(llamados NUM1.dat y NUM2.dat con números
enteros ). Los números de ambos ficheros los introducimos por
teclado en orden creciente. Por ejemplo, primero introducimos
Nº números del fichero 1(p.ej:4), introducimos los números
(p.ej: 4,6,8,10) y después los del otro fichero (1,3,5,7,8).
Una vez creado ambos ficheros, crearemos otro llamado MEZCLA.dat que
tendrá los números de los dos ficheros mezclados en orden. (1,3,4,5,6,7,8,8,10).
*/
public class MezclaFicherosSinArray {
/**
* Método escribirFichero. Dado un nombre de fichero, escribe una serie de numeros
* introducidos por teclado
* @param nombreFichero
* @throws IOException
*/
public static void escribirFichero(String nombreFichero) throws IOException{
File fichero =new File (nombreFichero);
FileOutputStream fileout = new FileOutputStream (fichero);
DataOutputStream dataOS = new DataOutputStream(fileout);
String texto=JOptionPane.showInputDialog("Cuantos numeros quiere introducir");
int totalNum=Integer.parseInt(texto);
for (int i=0;i<totalNum; i++)
{
String texto2=JOptionPane.showInputDialog("Inserte numero");
int num=Integer.parseInt(texto2);
dataOS.writeInt(num);
}
dataOS.close(); //cerrar strearn
}
/**
* Método leerFichero. Método que lee numeros de un fichero
* @param nombreFichero
* @throws IOException
*/
public static void leerFichero(String nombreFichero)throws IOException{
File fichero = new File (nombreFichero);
FileInputStream filein = new FileInputStream (fichero) ;
DataInputStream dataIS = new DataInputStream (filein);
int e;
try {
while (true) {
e = dataIS.readInt(); //recupera la edad
System.out.println("Numero: "+ e);
}
}catch (EOFException eo) {}
dataIS.close(); //cerrar stream
}
/**
*Método mezclaFicheros. Método que recoge numeros de 2 ficheros dados y los escribe de
*manera ordenada en uno nuevo llamado MEZCLA.DAT
* @param fichero1
* @param fichero2
* @throws IOException
*/
public static void mezclaFicheros(String fichero1, String fichero2) throws IOException{
File fichero =new File ("MEZCLA.dat");
FileOutputStream fileout = new FileOutputStream (fichero);
DataOutputStream dataOS = new DataOutputStream(fileout);
File ficheroleido1 = new File (fichero1);
FileInputStream filein = new FileInputStream (ficheroleido1) ;
DataInputStream dataIS = new DataInputStream (filein);
File ficheroleido2 = new File (fichero2);
FileInputStream filein2 = new FileInputStream (ficheroleido2) ;
DataInputStream dataIS2 = new DataInputStream (filein2);
int num1,num2;
try {
num1 = dataIS.readInt();
num2= dataIS2.readInt();
while (true)
{
if(num1<num2)
{
dataOS.writeInt(num1);
dataIS.readInt();
}else{
if(num1>num2)
{
dataOS.writeInt(num2);
dataIS2.readInt();
}else{
dataOS.writeInt(num2);
dataIS.readInt();
}
}
}
}catch (EOFException eo) {}
try{
num1 = dataIS.readInt();
while(true){
dataOS.writeInt(num1);
dataIS.readInt();
}
}catch(EOFException e){}
dataIS.close();
dataIS2.close();
dataOS.close();
System.out.println("RESULTADO FINAL");
leerFichero("MEZCLA.dat");
}
/**
* Método main
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
escribirFichero("NUM1.dat");
escribirFichero("NUM2.dat");
System.out.println("FICHERO NUM1.DAT");
leerFichero("NUM1.dat");
System.out.println("FICHERO NUM2.DAT");
leerFichero("NUM2.dat");
System.out.println("FICHERO MEZCLA.DAT");
mezclaFicheros("NUM1.dat", "NUM2.dat");
}
}
Muchas gracias, un saludo y espero que podais ayudarme