Sto cercando attraverso un mio programma (ancora solamente abbozzato) di unire in uno solo , più file ".avi"..per farlo uso questo codice:

codice:
File cartella = new File (System.getProperty("user.dir"));
String [] lista = cartella.list (new AVI ());
FileInputStream [] fis = new FileInputStream [lista.length];
FileOutputStream fos = new FileOutputStream (System.getProperty("user.dir") +  System.getProperty("file.separator") + "nomeFile.avi");
byte [][] dati = new byte [lista.length][];
int l = 0;
for (int i=0;i<lista.length;i++) {
	fis [i] = new FileInputStream (lista [i]);
	int a = fis [i].available ();
	dati [i] = new byte [a];
	l+=dati [i].length;
	fis [i].read (dati [i]);
	//System.out.println ("File corrente:\t" + lista [i] + "\ngrandezza file:	\t" + a + "\nl vale:\t" + l);
	fis [i].close ();
}
int k = 0;
byte [] datiTutti = new byte [l];
for (int i=0;i<lista.length;i++) {
	for (int j=0;j<dati [i].length;j++) {
		datiTutti [k] = dati [i][j];
		k++;
	}
}
fos.write (datiTutti);
fos.close ();
dove la classe AVI è la seguente:

codice:
import java.io.*;

class AVI implements FilenameFilter {

	final String avi = ".avi";

	public boolean accept (File dir, String name) {
		return name.endsWith(avi);
	}

}
Il risultato però non è ciò che vorrei:
ottengo un file con la dimensione pari alla somma delle dimensioni dei singoli file ma se vado ad aprirlo con un riproduttore , noto che mi fa vedere solo il video del primo file mentre tutti gli altri è come se non ci fossero..perchè accade ciò?

Ho pensato che magari all'interno di tali file video ci sia un qualche "flag-byte" (o simile) che ne indichi la fine , e quindi il riproduttore trovando esso non considera il resto..è possibile?altrimenti non so darmi una spiegazione..

Mi aiutate?