Ok, ho capito il problema, pero' mi dovresti dire come fai a determinare il punto in cui inserire l'altro file:
conti le linee gia' passate?
conti i byte gia' letti?
oppure fai un controllo su un carattere (o su una parola, insomma, ci siamo capiti ) e inserisci il file dopo che il controllo ha avuto successo?
Ultima cosa, se i file sono grandi, forse converrebbe appoggiarsi ad un file temporaneo, per evitare di utilizzare troppa memoria.
Abbozzo un esempio:
codice:
//Creo due oggetti che leggono dai due file A e B
BufferedReader inA = new BufferedReader(new FileReader("a.txt"));
BufferedReader inB = new BufferedReader(new FileReader("b.txt"));
//File temporaneo in cui salvare i dati
File tmp = new File("c.tmp");
PrintWriter out = new PrintWriter(new FileWriter(tmp), true);
//Leggo i dati dai file riga per riga
String buffer = inB.readLine();
//Leggo i dati da B fino a che raggiungo il punto in cui fermarmi
//ogni riga che leggo, la salvo in un file a parte
while(!check()) {
out.println(buffer);
buffer = inB.readLine();
}
//memorizzo anche l'ultima riga (quella che ha il controllo positivo)
out.println(buffer);
//ora leggo e memorizzo il file A fino alla fine
buffer = inA.readLine();
while(buffer != NULL) {
out.println(buffer);
buffer = inA.readLine();
}
//Memorizzo anche l'ultima parte di B, lunga a piacere
buffer = inB.readLine();
while(buffer != NULL) {
out.println(buffer);
buffer = inB.readLine();
}
Questa e' una possibile bozza, i commenti spero siano sufficienti.
Il metodo check() e' un metodo che devi implementare tu per stabilire se hai raggiunto il punto in cui inserire il file A.
Alla fine del mio codice (che comunque e' incompleto) hai 3 file A, B, e tmp che contiene il risultato.
Potresti cancellare B e sostituirlo con tmp, e il gioco e' fatto.