基于 apache 的 commons-net-3.3.jar 的 ftp java代码上传下载文件

package com.genomics.ib.item.control;

import java.io.File;    
import java.io.FileInputStream;    
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;    
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;    
    
/**
 * @author 
 * package com.genomics.ib.item.control
 * @title ItemFtp
 * @Description :  FTP 上传下载工具类
 * @time 2013-11-27 
 */
public class ItemFtp {      
       
    private  FTPClient ftp;      
    /**  
     *   
     * @param path 上传到ftp服务器哪个路径下     
     * @param addr 地址  
     * @param port 端口号  
     * @param username 用户名  
     * @param password 密码  
     * @return  
     * @throws Exception  
     */    
    private  boolean connect(String path,String addr,int port,String username,String password) throws Exception {      
        boolean result = false;      
        ftp = new FTPClient();      
        int reply;      
        ftp.connect(addr,port);      
        ftp.login(username,password);      
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);      
        reply = ftp.getReplyCode();      
        if (!FTPReply.isPositiveCompletion(reply)) {      
            ftp.disconnect();      
            return result;      
        }      
        ftp.changeWorkingDirectory(path);      
        result = true;      
        return result;      
    }      
    
    
    
    /**
     * @author 
     * @class  ItemFtp
     * @title  upload
     * @Description : 
     * @time 2013 2013-11-27
     * @return void
     * @exception :(Error note)
     * @param file 上传的文件或文件夹
     * @param path 上传的文件的路径 
     * @throws Exception
     */
    private void upload(File file , String path) throws Exception{   
    	
    	System.out.println( " file.isDirectory() : " + file.isDirectory()  );
    	
        if(file.isDirectory()){           
            ftp.makeDirectory(file.getName());                
            ftp.changeWorkingDirectory(file.getName());      
            String[] files = file.list();             
            for (int i = 0; i < files.length; i++) {      
                File file1 = new File(file.getPath()+"\\"+files[i] );      
                if(file1.isDirectory()){      
                    upload(file1 , path );      
                    ftp.changeToParentDirectory();      
                }else{                    
                    File file2 = new File(file.getPath()+"\\"+files[i]);      
                    FileInputStream input = new FileInputStream(file2);      
                    ftp.storeFile(file2.getName(), input);      
                    input.close();                            
                }                 
            }      
        }else{      
            File file2 = new File(file.getPath());    
            
            System.out.println( " file.getPath() : " + file.getPath()  + " | file2.getName() : " + file2.getName() );
            
            InputStream input = new FileInputStream(file2);   
             
            ftp.changeWorkingDirectory(path);   
            ftp.storeFile(file2.getName(), input);      
            
            input.close();  //关闭输入流
            ftp.logout();  //退出连接
        }      
    }    
    
    
       
    /**
     * @author 
     * @class  ItemFtp
     * @title  download
     * @Description : FPT 下载文件方法
     * @time 2013 2013-11-27
     * @return void
     * @exception :(Error note)
     * @param reomvepath 下载的文件的路径 
     * @param fileName  下载的文件名 
     * @param localPath 下载的文件本地路径
     * @throws Exception
     */
    @SuppressWarnings("unused")
	private void download(String reomvepath , String fileName , String localPath  ) throws Exception{   
             
            ftp.changeWorkingDirectory(reomvepath);  
            
         // 列出该目录下所有文件
            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);
	              System.out.println("下载成功!");
	              is.close();  
	             }
            }
            
            ftp.logout();  //退出连接
            
    } 
    
   public static void main(String[] args) throws Exception{    
	     
	   ItemFtp t = new ItemFtp();    
      
	   boolean lianjie = t.connect("D:\\", "127.0.0.1", 21, "jiang", "jiang");    
	  System.out.println( "连接 :" + lianjie  );
	  
	  //上传
//      File file = new File("d:\\test.txt");  
//      t.upload(file , "E:\\ftptest\\mulu");  
      
      //下载
      t.download("E:\\ftptest\\mulu", "test.txt", "D:\\db");
	  
	  
   }    
} 
借助jar包 apache 的 commons-net-3.3.jar
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值