PDA

View Full Version : [JAVA] JProgressBar per copia file su ciclo while


Sergei
20-12-2012, 18:45
Salve ragazzi :)
č da un paio di giorni che cercavo di capire la comunicazione tra server e client in java. Allora mi sono fatto questo piccolo programmino che trasferisce un file da un computer a un altro.
Volevo perņ dargli anche una semplice veste grafica per capire come funziona la JProgressBar. Mi sono messo su internet (sito della sun compreso) ma proprio non riesco a capire come devo fare. Ho provato a smanettare con la jprogressbar in un'altra classe giusto per capire come fare, il problema perņ relativo al fatto che deve avanzare e terminare con la copia del file e qui proprio non riesco a capire come fare :(
Ho cercato su internet ma niente, complice la mia ignoranza proprio non ci arrivo :(

per capirci il metodo č questo (chiedo scusa ma stavo cercando di capire alcune cose e ho un po' sballato qualcosina :stordita: alla fine č il ciclo while per la copia del file che importa):
public void riceviStream() throws IOException, ClassNotFoundException, InterruptedException {
// codice che serve per collegarsi
// chi riceve nel test e' il SERVER
// il client invia

while (true) {
try {
ServerSocket serverSocket = new ServerSocket(6789);
System.out.println("In attesa...");
Socket server = serverSocket.accept();
System.out.println("Sei ora connesso con: "
+ server.getInetAddress().getHostAddress());

//ricevo il nome del file
ObjectInputStream ois = new ObjectInputStream(
server.getInputStream());

//copio il messaggio nella string e lo stampo
nameFile = (String) ois.readObject();
System.out.println("SERVER: " + nameFile);

peso = (long) ois.readObject();
System.out.println("SERVER: peso file: " + peso);


// ricevo il file dal client
File ecotest = new File("/home/sergei/Scaricati/" + nameFile);
FileOutputStream fos = new FileOutputStream(ecotest, true);

byte[] buffer = new byte[1024];
int letti;

// leggo e scrivo su file
while ((letti = ois.read(buffer)) != -1) {
fos.write(buffer, 0, letti);
// calcolo la velocita'
totalRead += letti;
int speed = (int) (BYTES_PER_MIB * totalRead / (System
.nanoTime() - start + 1));

//test per calcolare mb passati

int size = (int) (peso / 1024);
totale = speed + totale;
int tot = totale / 1024;
//System.out.println(speed + "Kb/s");
System.out.println(tot + " di " + size + " vel: " + speed + " kb/s");
}

} catch (SocketException se) {
se.printStackTrace();
//Thread.sleep(5000);
//riceviStream();
}

}
}

Ora se provo a impostare la jprogressbar mi fa 0 100 in un nanosecondo e non riesco a capire... niente, non ci arrivo proprio. Di cosa avrei bisogno?