Avatar billede lifo Nybegynder
19. maj 2003 - 17:48 Der er 6 kommentarer og
1 løsning

commons/net erfaring med transfer status ?

er der nogen der har brugt commons/net http://jakarta.apache.org/commons/net/

jeg har lavet en ftp klient men mangler at vise status når jeg overfører en fil
er der nogen der ved hvordan jeg skal gøre det ??
Avatar billede arne_v Ekspert
19. maj 2003 - 18:40 #1
Status ?

Du kan nemt hente status på en kommandoe med getReplyStatus metoden
i dit FTPClient objekt.

Eller leder du efter noget svarende til kommando-linie FTP klienters hash, så
du kan se hvordan overførslen går ?
Avatar billede lifo Nybegynder
19. maj 2003 - 18:48 #2
nej det var ikke det jeg tænkte på
det når jeg har sat en transfer igeng så vil jeg vise et progress vindue
som viser hvor langt overførslen er kommet
Avatar billede arne_v Ekspert
19. maj 2003 - 19:01 #3
Det er grundliggende det samme som samme som command line hash.
Den skriver en # for hver 1000 byte. Du vil vil have en progress bar
der viser procentvis overførsel.

Begge kræver at man kan følge med i hvor lmange bytes der er
overført. Jeg er lidt bange for at commons net måske er for
high level til den slags.

Jeg vil lige prøve at nærlæse docs.
Avatar billede arne_v Ekspert
19. maj 2003 - 19:06 #4
Umiddelbart ser det ud til at du skal kalde retreiveFileStream og
storeFileStream og så lade den kode der læser fra elle rskriver til
stream tælle bytes og opdatere progress vinduet.
Avatar billede arne_v Ekspert
19. maj 2003 - 19:35 #5
Eksempel:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;

public class FtpGet {
    public static void main(String[] args) {
        FTPClient client = new FTPClient();
        try {
            client.connect("192.168.1.10");
            client.login("anonymous", "arne@");
            InputStream is = client.retrieveFileStream("index.lis");
            OutputStream os = new FileOutputStream("index.lis");
            byte[] b = new byte[1000];
            int n;
            int total = 0;
            while((n = is.read(b)) >= 0) {
                os.write(b,0,n);
                total += n;
                System.out.println("bytes: " + total);
            }
            os.close();
            is.close();
            client.disconnect();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
19. maj 2003 - 19:37 #6
Den kode henter en fil og udskriver løbende hvor mange bytes der er hentet.

DU vil næppe udskrive med System.out.println, men hvis du er ved at lave
en Swing applikation så¨er der nogle klasser til at markere den slags med.
Avatar billede lifo Nybegynder
19. maj 2003 - 20:08 #7
tak tak det var lige hvad jeg havde brug for
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester