JAVA代码实现SFTP文件下载

本文介绍了使用JAVA通过jsch库实现SFTP文件下载的方法,强调了SFTP下载与FTP下载的区别,并提供了相关工具类FTPUtil的定制说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

二、定制工具类FTPUtil.java

package common;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class FtpUtil {

	private final static Log logger = LogFactory.getLog(FtpUtil.class);

	
	/*
	 * 从SFTP服务器下载文件
	 * 
	 * @param ftpHost SFTP IP地址
	 * 
	 * @param ftpUserName SFTP 用户名
	 * 
	 * @param ftpPassword SFTP用户名密码
	 * 
	 * @param ftpPort SFTP端口
	 * 
	 * @param ftpPath SFTP服务器中文件所在路径 格式: ftptest/aa
	 * 
	 * @param localPath 下载到本地的位置 格式:H:/download
	 * 
	 * @param fileName 文件名称
	 */
	public static void downloadSftpFile(String ftpHost, String ftpUserName,
			String ftpPassword, int ftpPort, String ftpPath, String localPath,
			String fileName) throws JSchException {
		Session session = null;
		Channel channel = null;

		JSch jsch = new JSch();
		session = jsch.getSession(ftpUserName, ftpHost, ftpPort);
		session.setPassword(ftpPassword);
		session.setTimeout(100000);
		Properties config = new Properties();
		config.put("StrictHostKeyChecking", "no");
		session.setConfig(config);
		session.connect();

		channel = session.openChannel("sftp");
		channel.connect();
		ChannelSftp chSftp = (ChannelSftp) channel;

		String ftpFilePath = ftpPath + "/" + fileName;
		String localFilePath = localPath + File.separatorChar + fileName;

		try {
			chSftp.get(ftpFilePath, localPath);
		} catch (Exception e) {
			e.printStackTrace();
			logger.info("download error.");
		} finally {
			chSftp.quit();
			channel.disconnect();
			session.disconnect();
		}

	}

}

三、测试代码

package scripts.testscript;

import org.testng.annotations.Test;

import com.jcraft.jsch.JSchException;

import common.FtpUtil;

public class SftpDownloadTestScript {
	@Test
	public void run() throws JSchException {
		
		String ftpHost = "192.168.26.132";
		String ftpUserName = "zyf";
		String ftpPassword = "zyf";
		int ftpPort = 22;
		String ftpPath = "ftpdir/";
		String localPath = "H:/download";
		String fileName = "11.txt";
		FtpUtil.downloadSftpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值