Sto cercando attraverso un mio programma (ancora solamente abbozzato) di unire in uno solo , più file ".avi"..per farlo uso questo codice:
dove la classe AVI è la seguente: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 ();
Il risultato però non è ciò che vorrei:codice:import java.io.*; class AVI implements FilenameFilter { final String avi = ".avi"; public boolean accept (File dir, String name) { return name.endsWith(avi); } }
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?![]()
![]()

Rispondi quotando