Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20

    stato trasferimento file

    ciao a tutti...
    stò creando uno schedulatore per spedire/ricevere file in rete.
    dato che questa rete è puttosto lenta, mi piacerebbe sapere lo stato di trasferimento dei dati.
    com posso fare?

    codice:
    import java.nio.channels.*;
    import java.io.*;
    
    public class Copy2
    {
       public void copyFile(File sfile, File dfile) throws Exception
       {
         FileChannel source = new FileInputStream(sfile).getChannel();
         FileChannel dest = new FileOutputStream(dfile).getChannel();
         source.transferTo(0, source.size(), dest);
         source.close();
         dest.close();
       }
    }
    ho usato questo codice per il trasferimento....

    grazie in antipito a tutti.!!.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20
    ciao,
    grazie x la risposta...

    comunque avevo già provato a fare l invio di più pacchietti(ad esempio inizio da 1024 byte, poi in base a quanto ci impiega a completare l operazione aumento la dimensione del byte o diminuisco).
    però ho notato che i tempi di trasferimento peggiorano(probabilente dovrei usare una tecnica migliore).....

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20
    nessun altra idea?!?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.