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(PauseResumeTransfers.class);
Logger.setLevel(Level.INFO);
FileTransferClient ftp = null;
try {
// create client
log.info("Creating FTP client");
ftp = new FileTransferClient();
// set remote host
ftp.setRemoteHost(host);
ftp.setUserName(username);
ftp.setPassword(password);
// set up listener
CancelListener cl = new CancelListener(ftp);
ftp.setEventListener(cl);
// the transfer notify interval must be greater than buffer size
ftp.getAdvancedSettings().setTransferBufferSize(500);
ftp.getAdvancedSettings().setTransferNotifyInterval(1000);
// connect to the server
log.info("Connecting to server " + host);
ftp.connect();
log.info("Connected and logged in to server " + host);
log.info("Uploading file");
String name = "PauseResumeTransfers.java";
// the upload will be interrupted by the listener - it will call
// cancelAllTransfers(). We catch the expected exception.
try {
ftp.uploadFile(name, name);
}
catch (FTPTransferCancelledException ex) {
log.debug("Transfer cancelled");
}
int len = (int) ftp.getSize(name);
File file = new File(name);
log.info("Bytes transferred=" + cl.getBytesTransferred());
log.info("File partially uploaded (localsize=" + file.length()
+ " remotesize=" + len);
log.info("Completing upload by resuming");
ftp.uploadFile(name, name, WriteMode.RESUME);
len = (int) ftp.getSize(name);
// only the remaining bytes are transferred as can be seen
log.info("Bytes transferred=" + cl.getBytesTransferred());
log.info("File uploaded (localsize=" + file.length()
+ " remotesize=" + len);
// now delete remote file
ftp.deleteFile(name);
// Shut down client
log.info("Quitting client");
ftp.disconnect();
log.info("Example complete");
} catch (Exception e) {
e.printStackTrace();
}
}