文件传输在开发中还是经常会遇到的,通常情况会采用ftp协议,java实现ftp协议传输的工具还是有挺多的选择的,比如apache的commons-net工具包。要想程序实现sftp协议或ssh协议的传输文件,也是很容易的,这时用到的就是jcraft的Jsch工具包了。
如果项目采用maven构建的话,引入
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.50</version> </dependency>
使用的情况:服务器是linux系统,我们需要将我们的文件上传到指定的目录下,使用ssh2协议或sftp协议。
代码示列:
import java.util.Properties; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; /** * @ClassName: JschSFTP * @Description: sftp文件传输工具类 * @author lipenglong * @date 2013-12-13 下午4:50 */ public class JschSFTP { private Session session = null; private Channel channel = null; private String sftpHost; private int sftpPort; private String sftpUserName; private String sftpPassword; private int timeout; public void setSftpHost(String sftpHost) { this.sftpHost = sftpHost; } public void setSftpPort(int sftpPort) { this.sftpPort = sftpPort; } public void setSftpUserName(String sftpUserName) { this.sftpUserName = sftpUserName; } public void setSftpPassword(String sftpPassword) { this.sftpPassword = sftpPassword; } public void setTimeout(int timeout) { this.timeout = timeout; } /** * 获取连接 * @return */ private ChannelSftp getChannelSftp() { try { if (channel != null && channel.isConnected()) { return (ChannelSftp) channel; } JSch jSch = new JSch(); if (session == null || !session.isConnected()) { session = jSch.getSession(sftpUserName, sftpHost, sftpPort); session.setPassword(sftpPassword); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.setTimeout(timeout); session.connect(); } channel = session.openChannel("sftp"); channel.connect(); } catch (Exception e) { Log4jUtil.CommonLog.error(e.getMessage(), e); if (session != null) { session.disconnect(); session = null; } channel = null; } return channel == null ? null : (ChannelSftp) channel; } /** * 关闭连接 */ public void closeChannel() { try { if (channel != null) { channel.disconnect(); channel = null; } if (session != null) { session.disconnect(); session = null; } } catch (Exception e) { Log4jUtil.CommonLog.error(e.getMessage(), e); } } /** * 文件上传 * @param src 源文件absolutePath * @param dst 目标文件名 * @param dir 目标文件路径 * @return boolean */ public boolean uploadFile(String src, String dst, String dir) { boolean flag = false; ChannelSftp channelSftp = getChannelSftp(); if (channelSftp == null) { return false; } try { channelSftp.cd(dir); channelSftp.put(src, dst, ChannelSftp.OVERWRITE); flag = true; } catch (Exception e) { flag = false; Log4jUtil.CommonLog.error(e.getMessage(), e); } return flag; } /** * 重命名 * @param oldName 旧文件名 * @param newName 新文件名 * @param dir 文件所在路径 * @return boolean */ public boolean renameTmpFile(String oldName, String newName, String dir) { boolean flag = false; ChannelSftp channelSftp = getChannelSftp(); if (channelSftp == null) { return false; } try { channelSftp.cd(dir); channelSftp.rename(oldName, newName); flag = true; } catch (SftpException e) { flag = false; Log4jUtil.CommonLog.error(e.getMessage(), e); try { channelSftp.rm(newName); } catch (SftpException e1) { } } return flag; } }
我曾写过的一个程序情况:把一个数据包**.rar上传到服务器(如/var/data/),文件大小不一定,上传中文件为"/var/data/**.rar.tmp"上传成功后去掉“.tmp",这两个方法就可以实现了~
配置参数可通过spring的注入,例如
sftpHost:192.168.1.**
sftpPort:22
sftpUserName:root(当然通常不会用root用户的)
sftpPassword:***(只有自己知道了~)
timeout:30000
相关推荐
该类使用JSch库来实现SFTP协议的连接和文件传输,提供了一个基本的SFTP客户端实现。 SFTP协议的主要特点包括: * 安全性:SFTP协议使用SSH协议提供的加密机制,确保文件传输的安全性。 * 可靠性:SFTP协议提供了...
ChannelSftp类是JSch实现SFTP的核心类,它封装了SFTP协议的所有操作方法。例如,put()用于文件上传,get()用于文件下载,cd()用于进入指定目录,ls()用于获取指定目录下的文件列表,rename()用于重命名文件等。利用...
SFTP则基于SSH协议,提供了安全的文件传输方式。Java中可以使用JSch库来实现SFTP操作。JSch是一个纯Java实现的SSH2库,支持SFTP。使用JSch时,需要先建立SSH连接,然后打开一个SFTP会话。文件操作的接口封装在`...
SFTP是一种在不安全的网络上安全传输文件的协议,它基于SSH(Secure Shell)协议,提供了数据加密和身份验证功能。Java中没有内置对SFTP的支持,因此需要借助像JSch这样的库来实现。 JSch库的使用步骤大致包括以下...
在Java编程环境中,有时我们需要与远程服务器进行文件传输,这时SFTP(Secure File Transfer Protocol,安全文件传输协议...这个过程涉及的主要知识点包括:SSH协议、SFTP协议、JSch库的使用、Java I/O流以及异常处理。
SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不同主机之间传输文件,它基于SSH(Secure Shell)协议,提供了数据加密和身份验证功能,确保了文件传输过程中的安全性。JSch是一个Java实现的...
SFTP是一种基于SSH协议的安全文件传输协议,它为数据传输提供加密保护。本文将详细介绍如何利用JSch库实现在Java应用程序中进行文件下载的功能,并介绍相关的辅助方法。 #### JSch 库简介 JSch 是一个纯Java实现的...
SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不同主机之间传输文件,它基于SSH(Secure Shell)协议,提供了数据加密和身份验证功能,确保了文件传输过程中的安全性。JSch(Java Secure ...
ChannelSftp 是 JSCH 中的一个实现 SFTP 协议的 Channel,提供了文件传输、文件管理等功能。 在本文中,我们将详细介绍如何使用 JSCH 中的 ChannelSftp 上传文件和文件夹。 ### SFTP 协议简介 SFTP(Secure File...
JSch库为Java开发者提供了一个简单且强大的工具,用于实现SFTP协议,使得在Java程序中安全地处理远程文件变得更加容易。无论是上传还是下载文件,只要按照上述步骤和方法,都能实现高效且安全的SFTP操作。在开发过程...
JSch是Java Secure Channel的一个开源实现,它提供了一个方便的API来连接SSH2协议(SFTP是基于SSH2的子协议)的服务器。 JSch库的核心功能包括: 1. **建立SFTP连接**:JSch库允许开发者通过提供主机名、端口号、...
5. **SCP支持**:除了SFTP,JSch还支持SCP(Secure Copy),另一种基于SSH的文件传输协议。 SCP通常用于在命令行中复制文件,而JSch库则提供了在Java程序中实现SCP功能的能力。 **使用JSch实现SFTP** 要使用JSch...
SFTP(Secure File Transfer Protocol)是一种基于SSH2协议的安全文件传输协议,用于在不同网络之间安全地传输文件。它确保了数据的完整性,通过加密连接防止未经授权的访问和窃听。在Java中,我们可以利用开源库...
【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、...通过这个项目,开发者可以提升在这些领域的能力,实现高效、安全的文件传输自动化。
首先,SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全传输文件的能力。在Java中,我们通常使用JSch库来实现SFTP功能。JSch是一个纯Java实现的SSH2库,支持SCP、SFTP和SSH命令。 1. **JSch库**:...
SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全传输文件的能力。下面将详细介绍Java实现SFTP文件上传的相关知识点。 首先,你需要一个支持SFTP的Java库。Java本身并不内置SFTP功能,但我们可以...
在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它基于SSH(Secure Shell)来提供服务,常用于在不同系统间安全地传输文件。本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的...
JSch是一个纯Java实现的SSH2库,它允许用户连接到SFTP服务器,进行文件传输、创建目录、删除文件等操作。首先,我们需要在项目中引入JSch库,然后创建一个`Session`对象,设置用户名、密码或密钥对,并连接到SFTP...