Se il codice di trasferimeno è quello che hai postato, non puoi fare gran chè, dato che non hai nessun controllo sulla quantità di dati trasferita in un dato istante. Questo perchè, semplicemente, hai detto al FileChannel di trasferire tutto il file in un blocco solo. Questo significa che la chiamata al metodo transferTo() terminerà solo quando l'intero trasferimento è finito, senza darti la possibilità di "controllarlo".
Se vuoi poter tenere sotto controllo l'avanzamento, dovrai procedere in modo diverso. Innanzitutto quella parte di codice va messa all'interno di un thread, in modo che, mentre lei (la parte di trasferimento) lavora, anche gli altri (chi la controlla) possano lavorare.
In secondo luogo dovrai trasferire il file a piccoli pacchetti di N byte. Sapendo quanto è grande il file da trasferire, ad ogni pacchetto inviato puoi richiamare un metodo che calcola la percentuale di file trasferita e la mette a disposizione per qualcuno che la visualizza (o si occua lui stesso di visualizzarla).
Ciao.![]()



Rispondi quotando