import java.io.File;
import java.io.IOException;
import java.util.Date;
import ftp.*;
/**
* This is a example of using FtpBean.
* It connects to a ftp server. Go to a directory.
* Then list its content with help of the FtpListResult class.
* Finally, it gets a binary file. In the downloading
* progress, it tells how many bytes are being downloaded.
*
* Note that this class implements the FtpObserver interface, which
* make this class have the ability to monitor the downloading or
* uploading progress. If you don't need to monitor it, then you
* don't need to implement this interface.
*
* For using more function of this FtpBean, please see the documentation.
*/
class FtpExample implements FtpObserver
{
static FtpBean ftp;
long num_of_bytes = 0;
public FtpExample()
{
// Create a new FtpBean object.
ftp = new FtpBean();
}
// Connect to a ftp server.
public void connect()
{
try
{
ftp.ftpConnect("localhost", "vijay", "hello");
ftp.setSocketTimeout(1000);
} catch(Exception e)
{
System.out.println(e);
}
}
// Close connection
public void close()
{
try
{
ftp.close();
} catch(Exception e)
{
System.out.println(e);
}
}
// Go to directory pub and list its content.
public void listDirectory()
{
FtpListResult ftplrs = null;
try
{
// Go to directory 'pub/redhat/redhat-6.2/i386/RedHat/RPMS'.
ftp.setDirectory("_cms/");
// Get its directory content.
ftplrs = ftp.getDirectoryContent();
} catch(Exception e)
{
System.out.println(e);
}
// Print out the type and file name of each row.
while(ftplrs.next())
{
int type = ftplrs.getType();
if(type == FtpListResult.DIRECTORY)
System.out.print("DIR\t");
else if(type == FtpListResult.FILE)
System.out.print("FILE\t");
else if(type == FtpListResult.LINK)
System.out.print("LINK\t");
else if(type == FtpListResult.OTHERS)
System.out.print("OTHER\t");
System.out.println(ftplrs.getName());
}
}
// Get the file.
public void getFile()
{
try
{
// Get the binary file 'kernel-2.2.14-5.0.i386.rpm' and save it to
// the name 'local_file_name' in the hard disk.
// Passing this class which implements the FtpObserver interface to
// monitor this downloading progress. Every time new bytes are read,
// the byteRead(int) method of this class is invoked by the bean.
ftp.getBinaryFile("build.txt", "local_file_name", this);
} catch(Exception e)
{
System.out.println(e);
}
}
// Implemented for FtpObserver interface.
// To monitor download progress.
public void byteRead(int bytes)
{
num_of_bytes += bytes;
System.out.println(num_of_bytes + " of bytes read already.");
}
// Needed to implements by FtpObserver interface.
public void byteWrite(int bytes)
{
}
// Main
public static void main(String[] args)
{
FtpExample example = new FtpExample();
example.connect();
example.listDirectory();
//example.getFile();
Date d = new Date();
long t = d.getTime();
System.out.println("test file " + t);
File f = new File("/home/vijay");
/*if ((! f.exists())||(! f.isDirectory())) {
System.out.println("invalid ftpdir " );
return ;
}*/
File cms = new File(f, CM_DIR);
if (f.exists()&&(! f.isDirectory())) {
System.out.println("invalid cmsdir " );
return ;
}
cms.mkdir();
try {
ftp.putBinaryFile("testfile.out", TEST_DATA);
/*
byte[] ret = ftp.getBinaryFile(Long.toString(t));
int i = 0;
for (i=0;i<TEST_DATA.length; i++) {
if (ret[i] != TEST_DATA[i]) {
throw new IOException("read error " + i);
}
}*/
} catch (Exception e) {
System.out.println("failed to read/write into ftp server" + e);
e.printStackTrace();
return ;
}
File tmp = new File(cms, Long.toString(t));
if (! tmp.exists()) {
System.out.println("failed test file in cms dir " + tmp.getAbsolutePath());
return ;
}
tmp.delete();
try {
ftp.close();
} catch (Exception e) {
System.out.println("failed to exit ftp session " + e);
}
//return ClientValidationResult.SUCCESS;
example.getFile();
example.close();
}
private static byte[] TEST_DATA = {50, 51, 52, 53, 54, 55, 56, 57, 58, 59};
public static final String CM_DIR = "/_cm/";
}
|