Java代码实现SFTP文件下载

一、SFTP文件的下载和FTP下载差别较大,需要下载jsch-0.1.53.jar包 。关于jsch的详细资料,可以查看官网:http://www.jcraft.com/jsch/

二、定制工具类FTPUtil.Java

[java]  view plain  copy
  1. package common;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.OutputStream;  
  8. import java.net.SocketException;  
  9. import java.util.Properties;  
  10.   
  11. import org.apache.commons.logging.Log;  
  12. import org.apache.commons.logging.LogFactory;  
  13. import org.apache.commons.net.ftp.FTPClient;  
  14. import org.apache.commons.net.ftp.FTPReply;  
  15.   
  16. import com.jcraft.jsch.Channel;  
  17. import com.jcraft.jsch.ChannelSftp;  
  18. import com.jcraft.jsch.JSch;  
  19. import com.jcraft.jsch.JSchException;  
  20. import com.jcraft.jsch.Session;  
  21.   
  22. public class FtpUtil {  
  23.   
  24.     private final static Log logger = LogFactory.getLog(FtpUtil.class);  
  25.   
  26.       
  27.     /* 
  28.      * 从SFTP服务器下载文件 
  29.      *  
  30.      * @param ftpHost SFTP IP地址 
  31.      *  
  32.      * @param ftpUserName SFTP 用户名 
  33.      *  
  34.      * @param ftpPassword SFTP用户名密码 
  35.      *  
  36.      * @param ftpPort SFTP端口 
  37.      *  
  38.      * @param ftpPath SFTP服务器中文件所在路径 格式: ftptest/aa 
  39.      *  
  40.      * @param localPath 下载到本地的位置 格式:H:/download 
  41.      *  
  42.      * @param fileName 文件名称 
  43.      */  
  44.     public static void downloadSftpFile(String ftpHost, String ftpUserName,  
  45.             String ftpPassword, int ftpPort, String ftpPath, String localPath,  
  46.             String fileName) throws JSchException {  
  47.         Session session = null;  
  48.         Channel channel = null;  
  49.   
  50.         JSch jsch = new JSch();  
  51.         session = jsch.getSession(ftpUserName, ftpHost, ftpPort);  
  52.         session.setPassword(ftpPassword);  
  53.         session.setTimeout(100000);  
  54.         Properties config = new Properties();  
  55.         config.put("StrictHostKeyChecking""no");  
  56.         session.setConfig(config);  
  57.         session.connect();  
  58.   
  59.         channel = session.openChannel("sftp");  
  60.         channel.connect();  
  61.         ChannelSftp chSftp = (ChannelSftp) channel;  
  62.   
  63.         String ftpFilePath = ftpPath + "/" + fileName;  
  64.         String localFilePath = localPath + File.separatorChar + fileName;  
  65.   
  66.         try {  
  67.             chSftp.get(ftpFilePath, localPath);  
  68.         } catch (Exception e) {  
  69.             e.printStackTrace();  
  70.             logger.info("download error.");  
  71.         } finally {  
  72.             chSftp.quit();  
  73.             channel.disconnect();  
  74.             session.disconnect();  
  75.         }  
  76.   
  77.     }  
  78.   
  79. }  

三、测试代码

[java]  view plain  copy
  1. package scripts.testscript;  
  2.   
  3. import org.testng.annotations.Test;  
  4.   
  5. import com.jcraft.jsch.JSchException;  
  6.   
  7. import common.FtpUtil;  
  8.   
  9. public class SftpDownloadTestScript {  
  10.     @Test  
  11.     public void run() throws JSchException {  
  12.           
  13.         String ftpHost = "192.168.26.132";  
  14.         String ftpUserName = "zyf";  
  15.         String ftpPassword = "zyf";  
  16.         int ftpPort = 22;  
  17.         String ftpPath = "ftpdir/";  
  18.         String localPath = "H:/download";  
  19.         String fileName = "11.txt";  
  20.         FtpUtil.downloadSftpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);  
  21.     }  
  22. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值