转载地址:
		
				http://blog.csdn.net/hbcui1984/archive/2008/07/27/2720204.aspx
		
		
		
		
				在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。
		
		
				一、上传文件
		
		         原理就不介绍了,大家直接看代码吧
		
				
				
						- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
										  
								
						
- 
								public
								
								
								static
								
								
								boolean
								 uploadFile(String url,
								int
								 port,String username, String password, String path, String filename, InputStream input) {   
						
- 
								    
								boolean
								 success = 
								false
								;   
						
- 
								     FTPClient ftp = 
								new
								 FTPClient();   
						
- 
								    
								try
								 {   
						
- 
								        
								int
								 reply;   
						
- 
								         ftp.connect(url, port);
								
								  
						
- 
								        
								
								  
						
- 
								         ftp.login(username, password);
								
								  
						
- 
								         reply = ftp.getReplyCode();   
						
- 
								        
								if
								 (!FTPReply.isPositiveCompletion(reply)) {   
						
- 
								             ftp.disconnect();   
						
- 
								            
								return
								 success;   
						
- 
								         }   
						
- 
								         ftp.changeWorkingDirectory(path);   
						
- 
								         ftp.storeFile(filename, input);            
						
- 
								           
						
- 
								         input.close();   
						
- 
								         ftp.logout();   
						
- 
								         success = 
								true
								;   
						
- 
								     } 
								catch
								 (IOException e) {   
						
- 
								         e.printStackTrace();   
						
- 
								     } 
								finally
								 {   
						
- 
								        
								if
								 (ftp.isConnected()) {   
						
- 
								            
								try
								 {   
						
- 
								                 ftp.disconnect();   
						
- 
								             } 
								catch
								 (IOException ioe) {   
						
- 
								             }   
						
- 
								         }   
						
- 
								     }   
						
- 
								    
								return
								 success;   
						
- 
								}
						
 
		/**
  * Description: 向FTP服务器上传文件
  * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@d-heaven.com)创建
  * @param url FTP服务器hostname
  * @param port FTP服务器端口
  * @param username FTP登录账号
  * @param password FTP登录密码
  * @param path FTP服务器保存目录
  * @param filename 上传到FTP服务器上的文件名
  * @param input 输入流
  * @return 成功返回true,否则返回false
  */
 public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
  boolean success = false;
  FTPClient ftp = new FTPClient();
  try {
   int reply;
   ftp.connect(url, port);//连接FTP服务器
   //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
   ftp.login(username, password);//登录
   reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return success;
   }
   ftp.changeWorkingDirectory(path);
   ftp.storeFile(filename, input);   
   
   input.close();
   ftp.logout();
   success = true;
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (ftp.isConnected()) {
    try {
     ftp.disconnect();
    } catch (IOException ioe) {
    }
   }
  }
  return success;
 }
		
		
		下面我们写两个小例子:
		1.将本地文件上传到FTP服务器上,代码如下:
		
				
				
						- 
								
										
												@Test
										
										  
								
						
- 
								public
								
								
								void
								 testUpLoadFromDisk(){   
						
- 
								    
								try
								 {   
						
- 
								         FileInputStream in=
								new
								 FileInputStream(
								new
								 File(
								"D:/test.txt"
								));   
						
- 
								        
								boolean
								 flag = uploadFile(
								"127.0.0.1"
								, 
								
										21
								
								, 
								"test"
								, 
								"test"
								, 
								"D:/ftp"
								, 
								"test.txt"
								, in);   
						
- 
								         System.out.println(flag);   
						
- 
								     } 
								catch
								 (FileNotFoundException e) {   
						
- 
								         e.printStackTrace();   
						
- 
								     }   
						
- 
								}
						
 
		
				
				
		
		
				2.在FTP服务器上生成一个文件,并将一个字符串写入到该文件中
		
		
		
				
						- 
								
										
												@Test
										
										  
								
						
- 
								public
								
								
								void
								 testUpLoadFromString(){   
						
- 
								    
								try
								 {   
						
- 
								         InputStream input = 
								new
								 ByteArrayInputStream(
								"test ftp"
								.getBytes(
								"utf-8"
								));   
						
- 
								        
								boolean
								 flag = uploadFile(
								"127.0.0.1"
								, 
								
										21
								
								, 
								"test"
								, 
								"test"
								, 
								"D:/ftp"
								, 
								"test.txt"
								, input);   
						
- 
								         System.out.println(flag);   
						
- 
								     } 
								catch
								 (UnsupportedEncodingException e) {   
						
- 
								         e.printStackTrace();   
						
- 
								     }   
						
- 
								}
						
 
		
				
						二、下载文件
				
		
		       从FTP服务器下载文件的代码也很简单,参考如下:
		
				
				
						- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
								
						
- 
								
										
										  
								
						
- 
								public
								
								
								static
								
								
								boolean
								 downFile(String url, 
								int
								 port,String username, String password, String remotePath,String fileName,String localPath) {   
						
- 
								    
								boolean
								 success = 
								false
								;   
						
- 
								     FTPClient ftp = 
								new
								 FTPClient();   
						
- 
								    
								try
								 {   
						
- 
								        
								int
								 reply;   
						
- 
								         ftp.connect(url, port);   
						
- 
								        
								
								  
						
- 
								         ftp.login(username, password);
								
								  
						
- 
								         reply = ftp.getReplyCode();   
						
- 
								        
								if
								 (!FTPReply.isPositiveCompletion(reply)) {   
						
- 
								             ftp.disconnect();   
						
- 
								            
								return
								 success;   
						
- 
								         }   
						
- 
								         ftp.changeWorkingDirectory(remotePath);
								
								  
						
- 
								         FTPFile[] fs = ftp.listFiles();   
						
- 
								        
								for
								(FTPFile ff:fs){   
						
- 
								            
								if
								(ff.getName().equals(fileName)){   
						
- 
								                 File localFile = 
								new
								 File(localPath+
								"/"
								+ff.getName());   
						
- 
								                   
						
- 
								                 OutputStream is = 
								new
								 FileOutputStream(localFile);   
						
- 
								                 ftp.retrieveFile(ff.getName(), is);   
						
- 
								                 is.close();   
						
- 
								             }   
						
- 
								         }   
						
- 
								           
						
- 
								         ftp.logout();   
						
- 
								         success = 
								true
								;   
						
- 
								     } 
								catch
								 (IOException e) {   
						
- 
								         e.printStackTrace();   
						
- 
								     } 
								finally
								 {   
						
- 
								        
								if
								 (ftp.isConnected()) {   
						
- 
								            
								try
								 {   
						
- 
								                 ftp.disconnect();   
						
- 
								             } 
								catch
								 (IOException ioe) {   
						
- 
								             }   
						
- 
								         }   
						
- 
								     }   
						
- 
								    
								return
								 success;   
						
- 
								}