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?