Mega Code Archive

 
Categories / Java / Network Protocol
 

Ftp client demonstration

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.StringTokenizer; import sun.net.TelnetInputStream; import sun.net.ftp.FtpClient; public class FtpClientDemo {   public static int BUFFER_SIZE = 10240;   private FtpClient m_client;   // set the values for your server      private String host = "";   private String user = "";   private String password = "";   private String sDir = "";   private String m_sLocalFile = "";   private String m_sHostFile = "";   public FtpClientDemo() {     try {       System.out.println("Connecting to host " + host);       m_client = new FtpClient(host);       m_client.login(user, password);       System.out.println("User " + user + " login OK");       System.out.println(m_client.welcomeMsg);       m_client.cd(sDir);       System.out.println("Directory: " + sDir);       m_client.binary();       System.out.println("Success.");     } catch (Exception ex) {       System.out.println("Error: " + ex.toString());     }   }   protected void disconnect() {     if (m_client != null) {       try {         m_client.closeServer();       } catch (IOException ex) {       }       m_client = null;     }   }   public static int getFileSize(FtpClient client, String fileName)       throws IOException {     TelnetInputStream lst = client.list();     String str = "";     fileName = fileName.toLowerCase();     while (true) {       int c = lst.read();       char ch = (char) c;       if (c < 0 || ch == '\n') {         str = str.toLowerCase();         if (str.indexOf(fileName) >= 0) {           StringTokenizer tk = new StringTokenizer(str);           int index = 0;           while (tk.hasMoreTokens()) {             String token = tk.nextToken();             if (index == 4)               try {                 return Integer.parseInt(token);               } catch (NumberFormatException ex) {                 return -1;               }             index++;           }         }         str = "";       }       if (c <= 0)         break;       str += ch;     }     return -1;   }   protected void getFile() {     if (m_sLocalFile.length() == 0) {       m_sLocalFile = m_sHostFile;     }     byte[] buffer = new byte[BUFFER_SIZE];     try {       int size = getFileSize(m_client, m_sHostFile);       if (size > 0) {         System.out.println("File " + m_sHostFile + ": " + size             + " bytes");         System.out.println(size);       } else         System.out.println("File " + m_sHostFile + ": size unknown");       FileOutputStream out = new FileOutputStream(m_sLocalFile);       InputStream in = m_client.get(m_sHostFile);       int counter = 0;       while (true) {         int bytes = in.read(buffer);         if (bytes < 0)           break;         out.write(buffer, 0, bytes);         counter += bytes;       }       out.close();       in.close();     } catch (Exception ex) {       System.out.println("Error: " + ex.toString());     }   }   protected void putFile() {     if (m_sLocalFile.length() == 0) {       System.out.println("Please enter file name");     }     byte[] buffer = new byte[BUFFER_SIZE];     try {       File f = new File(m_sLocalFile);       int size = (int) f.length();       System.out.println("File " + m_sLocalFile + ": " + size + " bytes");       System.out.println(size);       FileInputStream in = new FileInputStream(m_sLocalFile);       OutputStream out = m_client.put(m_sHostFile);       int counter = 0;       while (true) {         int bytes = in.read(buffer);         if (bytes < 0)           break;         out.write(buffer, 0, bytes);         counter += bytes;         System.out.println(counter);       }       out.close();       in.close();     } catch (Exception ex) {       System.out.println("Error: " + ex.toString());     }   }   public static void main(String argv[]) {     new FtpClientDemo();   } }