wie das hochladen mehrerer Dateien mit Hilfe von java

Ich hoffe jemand kann mir helfen (mal wieder).

Habe ich eine sehr große Anzahl von smmll Dateien (über 4000) jeweils nur ein paar K.
Ich habe geschreiben Sie ein FTP-Programm in java, die übertragen jede Datei einzeln, aber es nimmt eine sehr lange Zeit. Auch die Handshake-overhead scheint das problem noch verschlimmern.

Was ich möchte in der Lage sein zu tun ist, öffnen Sie die FTP-Verbindung senden Sie alle Dateien, schließen Sie es dann erneut.

Ich weiß, dass dies möglich ist, in FTP, aber wie genau erreichen Sie diese in java ist mir schleierhaft.

Momentan habe ich die Dateinamen in ein array Parsen durch Sie ist das kein problem. Ich habe versucht, den Aufruf der folgenden Klasse, und übergeben Sie den Dateinamen, aber nach mehreren Stunden war es immer noch verschieben etwa 1 Datei pro Sekunde.

    package website;

    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;

    public class ftpUpload {

public ftpUpload(String target, String savename, String localFilePath) {

    URL url;
    try {
        url = new URL(target + savename + ";type=i");

        URLConnection con = url.openConnection();
        BufferedOutputStream out = 
            new BufferedOutputStream(con.getOutputStream());
        FileInputStream in = 
            new FileInputStream(localFilePath + savename);

        int i = 0;
        byte[] bytesIn = new byte[1024];
        while ((i = in.read(bytesIn)) >= 0) {
            out.write(bytesIn, 0, i);
        }
        out.close();
        in.close();

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

    }

Gibt es eine Möglichkeit, kann ich die Verbindung mit der ftp-site-Benutzernamen und Passwort,
dann senden Sie die Dateien
und schließlich die Verbindung schließen?

Dies scheint mir einfacher als das erstellen mehrerer threads zu senden, Dateien gleichzeitig.

Jede Beratung greatfully erhalten.

Paul

  • Wäre es akzeptabel, Dateien zippen, dann hochladen, nur die komprimierte Datei? Das kann wirklich leicht in Java erfolgt.
  • Können Sie zip, um die Dateien und senden Sie die zip-Datei statt? Oder ist der server erwartet individuelle Dateien?
  • Warum gehst du nicht erstellen Sie ein Archiv, das alle Dateien enthält, und senden Sie eine Datei anstelle von mehreren K ' s?
  • LOL, zip-in dreifacher Ausführung 😉
  • Es gibt zwei Wege für Sie zu gehen. First off, über FTP: Eine Datei pro Datenverbindung. Zeitraum. Sie können nicht übertragen Sie mehrere Dateien mit den gleichen Daten-Verbindung. Also entweder senden Sie Sie ein zu einer Zeit ('PASV', 'STOR')...oder Sie packen Sie in eine Zip-Datei und senden Sie, die.
  • macht es dieser eine ZIPLICATE post? Dann sind wir in großen Schwierigkeiten 🙂
  • Können Sie starten mehrere threads und geben jedem von Ihnen eine "Scheibe" von Ihrem array von Dateinamen, die hochgeladen werden?

InformationsquelleAutor PAUL WHITE | 2012-10-21
Schreibe einen Kommentar