/*
*
* Copyright (C) 2006 Enterprise Distributed Technologies Ltd
*
* www.enterprisedt.com
*/
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPClientInterface;
import com.enterprisedt.net.ftp.FTPProgressMonitor;
import com.enterprisedt.net.ftp.FTPMessageListener;
import com.enterprisedt.net.ftp.FTPTransferType;
import com.enterprisedt.util.debug.Level;
import com.enterprisedt.util.debug.Logger;
import java.io.File;
public class MonitorTransfersCommands {
public static void main(String[] args) {
// we want remote host, user name and password
if (args.length < 3) {
System.out
.println("Usage: run remote-host username password");
System.exit(1);
}
// extract command-line arguments
String host = args[0];
String username = args[1];
String password = args[2];
// set up logger so that we get some output
Logger log = Logger.getLogger(MonitorTransfersCommands.class);
Logger.setLevel(Level.INFO);
FTPClient ftp = null;
try {
// create client
log.info("Creating FTP client");
ftp = new FTPClient();
// set remote host
log.info("Setting remote host");
ftp.setRemoteHost(host);
// set transfer buffer size
// we set this to a number much smaller than the size of the
// file to be transferred. Progress is only updated when the
// transfer buffer is emptied
ftp.setTransferBufferSize(512);
// log progress every 512 bytes or so - this will only
// be approximate
LogProgressMonitor monitor = new LogProgressMonitor();
ftp.setProgressMonitor(monitor, 512);
// set up a message listener
LogMessageListener listener = new LogMessageListener();
ftp.setMessageListener(listener);
// connect to the server
log.info("Connecting to server " + host);
ftp.connect();
log.info("Connected to server " + host);
// log in
log.info("Logging in with username=" + username + " and password="
+ password);
ftp.login(username, password);
log.info("Logged in");
// use binary so file sizes can be compared precisely
ftp.setType(FTPTransferType.BINARY);
log.info("Uploading file");
String name = "MonitorTransfersCommands.java";
// put the file
ftp.put(name, name);
log.info("File uploaded");
// now delete remote file
ftp.delete(name);
// Shut down client
log.info("Quitting client");
ftp.quit();
log.info("Example complete");
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* Logs bytes transferred
*/
class LogProgressMonitor implements FTPProgressMonitor {
private static Logger log = Logger.getLogger(LogProgressMonitor.class);
public void bytesTransferred(long bytes) {
log.info("Bytes transferred=" + bytes);
}
}
/**
* Logs messages sent to and from the server
*/
class LogMessageListener implements FTPMessageListener {
private static Logger log = Logger.getLogger(LogMessageListener.class);
public void logCommand(String cmd) {
log.info("Command: " + cmd);
}
public void logReply(String reply) {
log.info("Server Reply: " + reply);
}
}
|