Sftp java类的应用(包括密钥连接)
使用:jsch-0.1.5.jar
/**
*
*/
package com.zgs.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
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;
import com.jcraft.jsch.SftpException;
/**
*
* @author Administrator
* 2015-4-10
*
*/
public class SFtp {
private String userName;
private String password;
private int port;
private String hostName;
private String priKeyFile;
private String passphrase;
Session session=null;
Channel channel=null;
/**
* @param userName
* @param password
* @param port
* @param hostName
*/
public SFtp(String userName, String password, int port, String hostName) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
}
/**
* @param userName
* @param password
* @param port
* @param hostName
* @param priKeyFile
* @param passphrase
*/
public SFtp(String userName, String password, int port, String hostName,
String priKeyFile, String passphrase) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
this.priKeyFile = priKeyFile;
this.passphrase = passphrase;
}
public ChannelSftp connect(){
JSch jsch=new JSch();
try {
if(port>0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
if (session == null) {
return null;
//throw new Exception("session is null");
}
//设置登陆主机的密码
session.setPassword(password);//设置密码
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
session.setConfig(sshConfig);
session.setTimeout(20000);
session.connect();
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
channel.connect();
return (ChannelSftp) channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
return null;
}
}
/**
* 密钥文件连接
* @return
*/
public ChannelSftp priKeyConnect(){
JSch jsch=new JSch();
try {
if(priKeyFile !=null && !"".equals(priKeyFile)){
if(passphrase !=null && !"".equals(passphrase)){
jsch.addIdentity(priKeyFile, passphrase);
}else{
jsch.addIdentity(priKeyFile);
}
}
if(port >0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
Properties config=new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
//session.setTimeout(20000);
session.connect();
channel=session.openChannel("sftp");
channel.connect();
return (ChannelSftp)channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
*
* @param is 要上传的本地文件流
* @param dsc 目标目录或文件,若是目录则上传的目标文件名和本地文件名一样
* @param sftp
* @return
*/
public boolean upload(InputStream is,String dsc,ChannelSftp sftp){
try {
sftp.put(is, dsc);
return true;
} catch (SftpException e) {
// TODO Auto-generated catch block
return false;
}
}
/**
*
* @param remotedir 要上传到的目录
* @param uploadFile 上传的文件
* @param sftp
* @return
*/
public boolean upload(String remotedir, String uploadFile, ChannelSftp sftp){
try {
sftp.cd(remotedir);
File file=new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
return false;
}
}
/**
* 下载文件
*
* @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();
}
}
}
分享到:
相关推荐
Java操作SFTP(Secure File Transfer Protocol)主要依赖于第三方库,如JSch。JSch是一个纯Java实现的SSH2库,允许开发人员...结合`SftpUtil`工具类,可以方便地集成SFTP操作到Java应用程序中,实现文件的安全传输。
在IT行业中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它允许用户在不安全的网络环境中...了解和掌握这一技术,对于任何需要在Java应用程序中实现安全文件传输的开发者来说都是至关重要的。
在IT行业中,SFTP...总的来说,Java中的SFTP操作涉及的主要知识点包括:JSch库的使用、SFTP协议、SSH连接、文件传输以及安全实践。通过这些知识,开发者可以构建安全可靠的文件传输功能,满足不同应用场景的需求。
JSch-0.1.54.jar是这个库的特定版本,包含了用于连接到远程服务器,执行文件上传、下载等操作所需的类和方法。开发者可以使用JSch来创建Java应用程序,实现在服务器间安全地交换文件。 2. **Java Cryptography ...
以上就是使用Java Swing实现SFTP文件夹上传的基本步骤,包括建立SSH连接、使用SFTP通道、上传文件和递归上传文件夹。对于生产环境,建议添加异常处理和错误提示,以及更安全的策略,如使用密钥对而非密码进行身份...
Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol(SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全...
在IT行业中,Java是一种广泛应用的编程语言,尤其在文件传输领域。本文将深入探讨如何使用Java实现SFTP(Secure File Transfer Protocol)和FTP(File Transfer Protocol)进行文件的上传与下载,以满足在Linux...
在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在...在实际应用中,记得根据你的SFTP服务器配置调整连接参数,并确保安全性,例如启用密钥验证或使用更安全的主机密钥检查策略。
总结来说,Java通过jcraft库实现了SFTP协议,使得开发人员能够安全地在Java应用中处理文件的上传和下载任务。了解这些知识点并能灵活运用,将有助于你构建健壮的文件传输系统。在实际项目中,还可以考虑异常处理、...
接下来,我们将创建一个简单的Java类来实现SFTP连接和文件传输。首先,我们需要建立SSH连接,这涉及到设置主机名、端口、用户名和密码(或者私钥)。然后,通过Session对象创建一个ChannelSftp实例,这将为我们提供...
`Ftp.java`可能是一个封装了SFTP操作的类,`properties.properties`是配置文件,包含SFTP连接的相关参数。`打包运行jar文件.txt`可能是关于如何构建和运行项目成可执行JAR的说明。 实现上述功能时,还需要注意异常...
JSch是一个纯Java实现的SSH2库,它允许Java应用程序连接到SFTP服务器,执行文件传输操作。在你的压缩包中,已经包含了所需的JSch库。 以下是一个基本的SFTP连接、上传和下载文件的Java代码示例: ```java import ...
JSCH是一个纯Java实现的SSH2库,可以用于执行SSH2协议的命令,包括SFTP操作。在提供的压缩包中,我们看到了"jsch-0.1.48.jar",这就是JSCH的库文件,需要将其添加到项目的类路径中。 下面是一个基本的SFTP文件上传...
Java SFTP 应用与开发涉及多个核心概念和技术,包括SFTP协议、非对称加密、密钥管理、SFTP服务器配置以及客户端编程接口。以下是对这些知识点的详细解释: 1. **SFTP(Secure File Transfer Protocol)**: SFTP是...
JCraft的JSch库是Java中广泛使用的SFTP实现库,它提供了SSH2协议的完整实现,包括SFTP。因此,你需要先下载并引入JSch库到你的项目中。 1. 引入JSch库: 在Maven项目中,可以在pom.xml文件中添加以下依赖: ```...
JSch(Java Secure Channel)是一个开源Java库,它允许开发者执行SSH2协议,包括SFTP。通过JSch,我们可以实现连接到远程服务器,创建、上传、下载、删除文件,以及列出目录等操作。 下面是一些使用JSch实现SFTP的...
在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它基于SSH(Secure Shell)来提供服务,常用于在不同系统间安全地传输文件。本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的...
Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol (SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种安全的网络协议,用于在客户端和服务器之间交换文件,它基于...
JSch是Java Secure Channel的一个开源实现,它提供了一个方便的API来连接SSH2协议(SFTP是基于SSH2的子协议)的服务器。 JSch库的核心功能包括: 1. **建立SFTP连接**:JSch库允许开发者通过提供主机名、端口号、...
这个“SftpDemo”可能包含了一个类似的示例代码,展示了如何使用SFTP上传文件。在实际应用中,你可能需要处理更复杂的情况,如错误处理、连接超时、证书验证等。 除此之外,还有一些其他的SFTP客户端工具,如WinSCP...