`

sftp工具类

 
阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

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 SftpUtil {

	private static SftpUtil sftpUtil = new SftpUtil();
	protected String host = "******";// sftp服务器ip
	protected String username = "***";// 用户名
	protected String password = "******";// 密码
	protected String privateKey = "D:/sftp键值对/***.key";// 密钥文件路径
	protected String passphrase = "";// 密钥口令
	protected int port = 22;// 默认的sftp端口号是22

	public static void main(String[] args) {
		SftpUtil t = new SftpUtil();
		ChannelSftp sftp = t.connectSFTP();
		System.out.println(123);
		// t.download("download", "", "");
		// t.upload("/", "e:/data4.txt", sftp);
		t.download("/", "HJB01_file_index_20140723_1.zip", System.getProperty("user.dir"), sftp);
		t.disconnected(sftp);
	}
	
	public SftpUtil(){};
	
	public static SftpUtil getInstance(){
		return sftpUtil;
	}
	
	/**
	 * 获取连接
	 * 
	 * @return channel
	 */
	public ChannelSftp connectSFTP() {
		JSch jsch = new JSch();
		Channel channel = null;
		try {
			if (privateKey != null && !"".equals(privateKey)) {
				// 使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥
				if (passphrase != null && !"".equals(passphrase)) {
					jsch.addIdentity(privateKey, passphrase);
				} else {
					jsch.addIdentity(privateKey);
				}
			}
			Session session = jsch.getSession(username, host, port);
			if (password != null && !"".equals(password)) {
				session.setPassword(password);
			}
			Properties sshConfig = new Properties();
			sshConfig.put("StrictHostKeyChecking", "no");// do not verify host
															// key
			session.setConfig(sshConfig);
			session.setTimeout(10000);
			//session.setServerAliveInterval(10000);
			session.connect();
			// 参数sftp指明要打开的连接是sftp连接
			channel = session.openChannel("sftp");
			channel.connect();
		} catch (JSchException e) {
			e.printStackTrace();
		}
		return (ChannelSftp) channel;
	}

	/**
	 * 上传文件
	 * 
	 * @param directory
	 *            上传的目录
	 * @param uploadFile
	 *            要上传的文件
	 * @param sftp
	 */
	public void upload(String directory, String uploadFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			File file = new File(uploadFile);
			sftp.put(new FileInputStream(file), file.getName());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 下载文件
	 * 
	 * @param directory
	 *            下载目录
	 * @param downloadFile
	 *            下载的文件
	 * @param saveFile
	 *            存在本地的路径
	 * @param sftp
	 */
	public void download(String directory, String downloadFile,
			String saveFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			sftp.get(downloadFile, saveFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 删除文件
	 * 
	 * @param directory
	 *            要删除文件所在目录
	 * @param deleteFile
	 *            要删除的文件
	 * @param sftp
	 */
	public void delete(String directory, String deleteFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			sftp.rm(deleteFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void disconnected(ChannelSftp sftp) {
		if (sftp != null) {
			try {
				sftp.getSession().disconnect();
			} catch (JSchException e) {
				e.printStackTrace();
			}
			sftp.disconnect();
		}
	}
}
分享到:
评论

相关推荐

    SFTP工具类

    SFTP 方式 文件上传、文件下载 文件列表。。。。。。。。。

    FTP和SFTP工具类(java)

    FTP和SFTP工具类,基于java语言 其中FTP修改默认模式为被动模式 文档还包括了需要引用的maven依赖内容

    java操作sftp的工具类(JSch)

    本文将详细介绍如何使用JSch进行SFTP操作,并提供一个简单的`SftpUtil`工具类示例。 首先,我们需要了解SFTP的基本概念。SFTP是一种在不安全的网络上安全传输文件的协议,它基于SSH(Secure Shell)协议,提供了...

    java实现sftp操作工具类

    版权声明:本工具类为个人兴趣基于chnSftp编写的应用,个人版权在先,后因各个办公环境无相关软件也有相关的个人使用,和办公环境内的推广使用,也欢迎互联网使用,如涉及相关环境认为本应用有不妥之处,请删除本人...

    连接SSH远程服务器-FTP和SFTP工具类(C#源码)

    连接SSH远程服务器,SFTP、FTP工具类。IFTP为接口,接口基本满足日常项目需要,派生MyFTPClient、MySFTPClient,方便应用扩展及整合到项目,提供例子拿来即用。sftp基于sshNet实现、Renci.SshNet是目前最为强大的C#...

    SFTP上传下载文件工具

    在IT行业中,SFTP工具是网络管理员、开发人员以及需要频繁进行文件传输的用户必不可少的工具之一。"SFTP上传下载文件工具"通常指的是支持SFTP协议的软件应用,这些应用使得用户能够方便地在本地计算机和远程服务器...

    java实现ftp和sftp的工具类

    Java 实现 FTP 和 SFTP 的工具类是网络编程中常见的一种需求,主要用于文件的传输。FTP(File Transfer Protocol)和 SFTP(Secure File Transfer Protocol)虽然都与文件传输有关,但它们之间存在显著的区别。 FTP...

    SFTP上传工具类

    java SFTP上传工具类

    支持多线程的SFTP类代码

    适用多线程的SFTP类,支持代理服务器,是spring服务类,无需修改可直接与spring结合使用。 代码经过大量的并发使用验证,稳定可靠。 依赖的jar包如下: <groupId>com.jcraft</groupId> <artifactId>...

    php5.6 sftp php_ssh2.dll工具类

    它们可能被这个SFTP工具类调用,以实现各种功能,比如`Crypt`可能用于处理SSH的加密过程,`File`和`Net`可能涉及文件上传下载和网络连接等操作。 总的来说,这个工具类通过PHP 5.6的语法和功能,结合SSH协议,实现...

    sftp的工具类和jar包

    本话题主要围绕"SFTP的工具类和jar包",我们将深入探讨如何利用jsch-0.1.49.jar库以及SFTPUtil.java工具类进行SFTP操作。 首先,`jsch-0.1.49.jar`是JSch库的一个版本,这是一个Java实现的SSH2库,它提供了对SFTP的...

    sftp上传工具之类的东东

    对于SFTP工具,它可能会解释如何配置和使用该软件,包括服务器连接设置、身份验证方法等。 SFTP工具的关键知识点包括: - **SFTP协议**:基于SSH(Secure Shell),提供安全的文件传输服务。 - **身份验证**:SFTP...

    SFTP.java工具类

    sftp java工具类

    java SFTP下载工具类 可上传,下载

    需要配合com.jcraft.jsch包使用 下载地址:http://sourceforge.net/projects/jsch/files/jsch.jar/0.1.51/jsch-0.1.51.jar/download

    Ftp和Sftp上传下载工具类

    该工具支持ftp和sftp的上传和下载 1

    ApacheFTP开源工具

    Apache FTP开源工具是一款基于Java语言实现的FTP(File Transfer Protocol)客户端库,它为开发者提供了在Java应用程序中轻松实现FTP文件传输的能力。Apache FTP工具旨在简化FTP通信过程,避免开发者从头开始编写...

    ssh2常用精简JAR

    在使用这些JAR文件时,确保正确配置了相应的XML配置文件(如struts2-config.xml、spring-context.xml、hibernate.cfg.xml),并将它们添加到项目的类路径中。 总的来说,SSH2框架组合提供了完整的MVC开发解决方案,...

    Sftp操作工具类(java)&jar包

    内含jar包和java实现代码 工具类含以下功能 1 得到当前工作目录地址 2 改变目录为配置的远程目录 3 取文件目录列表 4 取文件列表 5 下载文件 6 复制文件 7 删除文件 8 目录是否存在 文件是否存在 9 移动文件

    java操作sftp上传下载

    接下来,我们将创建一个名为`SFTPTool`的工具类,这个类将包含各种SFTP操作的方法。首先,我们需要建立一个连接到SFTP服务器的会话: ```java import com.jcraft.jsch.*; public class SFTPTool { private JSch ...

Global site tag (gtag.js) - Google Analytics