Package org.aoju.bus.extra.ssh
Class Sftp
java.lang.Object
org.aoju.bus.extra.ftp.AbstractFtp
org.aoju.bus.extra.ssh.Sftp
- All Implemented Interfaces:
Closeable,AutoCloseable
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议 可以为传输文件提供一种安全的加密方法
SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式 SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的
但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP
此类基于jsch的SFTP实现 参考:https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested Classes -
Field Summary
Fields inherited from class org.aoju.bus.extra.ftp.AbstractFtp
DEFAULT_CHARSET, ftpConfig -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean打开指定目录,如果指定路径非目录或不存在返回falsevoidclose()boolean删除文件夹及其文件夹下的所有文件boolean删除文件void下载文件voiddownload(String src, OutputStream out) 下载文件到OutputStream中void递归获取远程文件get(String src, OutputStream out) 获取远程文件获取远程文件com.jcraft.jsch.ChannelSftp获取SFTP通道客户端home()获取HOME路径voidinit()初始化void初始化void初始化void构造void初始化boolean判断给定路径是否为目录遍历某个目录下所有文件或目录,不会递归遍历遍历某个目录下所有文件或目录,不会递归遍历遍历某个目录下所有目录,不会递归遍历遍历某个目录下所有文件,不会递归遍历boolean在当前远程目录(工作目录)下创建新的目录put(InputStream srcStream, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, Sftp.Mode mode) 将本地数据流上传到目标服务器,目标文件名为destPath,目标必须为文件将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同 覆盖模式put(String srcFilePath, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, Sftp.Mode mode) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同pwd()远程当前目录如果连接超时的话,重新进行连接void将本地文件或者文件夹同步(覆盖)上传到远程路径boolean将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同 覆盖模式booleanupload(String destPath, String fileName, InputStream fileStream) 上传文件到指定目录,可选:Methods inherited from class org.aoju.bus.extra.ftp.AbstractFtp
download, exist, mkDirs, toParent
-
Constructor Details
-
Sftp
构造- Parameters:
sshHost- 远程主机sshPort- 远程主机端口sshUser- 远程主机用户名sshPass- 远程主机密码
-
Sftp
构造- Parameters:
sshHost- 远程主机sshPort- 远程主机端口sshUser- 远程主机用户名sshPass- 远程主机密码charset- 编码
-
Sftp
构造- Parameters:
config- FTP配置
-
Sftp
构造- Parameters:
config- FTP配置init- 是否立即初始化
-
Sftp
public Sftp(com.jcraft.jsch.Session session) 构造- Parameters:
session-Session
-
Sftp
构造- Parameters:
session-Sessioncharset- 编码
-
Sftp
构造- Parameters:
channel-ChannelSftpcharset- 编码
-
-
Method Details
-
init
构造- Parameters:
sshHost- 远程主机sshPort- 远程主机端口sshUser- 远程主机用户名sshPass- 远程主机密码charset- 编码
-
init
public void init()初始化 -
init
初始化- Parameters:
config- FTP配置
-
init
初始化- Parameters:
session-Sessioncharset- 编码
-
init
初始化- Parameters:
channel-ChannelSftpcharset- 编码
-
reconnectIfTimeout
Description copied from class:AbstractFtp如果连接超时的话,重新进行连接- Specified by:
reconnectIfTimeoutin classAbstractFtp- Returns:
- this
-
getClient
public com.jcraft.jsch.ChannelSftp getClient()获取SFTP通道客户端- Returns:
- 通道客户端
-
pwd
远程当前目录- Specified by:
pwdin classAbstractFtp- Returns:
- 远程当前目录
-
home
获取HOME路径- Returns:
- HOME路径
-
ls
遍历某个目录下所有文件或目录,不会递归遍历- Specified by:
lsin classAbstractFtp- Parameters:
path- 遍历某个目录下所有文件或目录- Returns:
- 目录或文件名列表
-
lsDirs
遍历某个目录下所有目录,不会递归遍历- Parameters:
path- 遍历某个目录下所有目录- Returns:
- 目录名列表
-
lsFiles
遍历某个目录下所有文件,不会递归遍历- Parameters:
path- 遍历某个目录下所有文件- Returns:
- 文件名列表
-
ls
遍历某个目录下所有文件或目录,不会递归遍历- Parameters:
path- 遍历某个目录下所有文件或目录filter- 文件或目录过滤器,可以实现过滤器返回自己需要的文件或目录名列表- Returns:
- 目录或文件名列表
-
mkdir
Description copied from class:AbstractFtp在当前远程目录(工作目录)下创建新的目录- Specified by:
mkdirin classAbstractFtp- Parameters:
dir- 目录名- Returns:
- 是否创建成功
-
isDir
Description copied from class:AbstractFtp判断给定路径是否为目录- Overrides:
isDirin classAbstractFtp- Parameters:
dir- 被判断的路径- Returns:
- 是否为目录
-
cd
打开指定目录,如果指定路径非目录或不存在返回false- Specified by:
cdin classAbstractFtp- Parameters:
directory- directory- Returns:
- 是否打开目录
-
delFile
删除文件- Specified by:
delFilein classAbstractFtp- Parameters:
filePath- 要删除的文件绝对路径- Returns:
- 是否存在
-
delDir
删除文件夹及其文件夹下的所有文件- Specified by:
delDirin classAbstractFtp- Parameters:
dirPath- 文件夹路径- Returns:
- boolean 是否删除成功
-
upload
Description copied from class:AbstractFtp将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同 覆盖模式- Specified by:
uploadin classAbstractFtp- Parameters:
destPath- 本地文件路径file- 目标文件- Returns:
- 是否成功
-
upload
将本地文件或者文件夹同步(覆盖)上传到远程路径- Parameters:
file- 文件或者文件夹remotePath- 远程路径
-
put
将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同 覆盖模式- Parameters:
srcFilePath- 本地文件路径destPath- 目标路径,- Returns:
- this
-
put
将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同- Parameters:
srcFilePath- 本地文件路径destPath- 目标路径mode-Sftp.Mode模式- Returns:
- this
-
put
public Sftp put(String srcFilePath, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, Sftp.Mode mode) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。- Parameters:
srcFilePath- 本地文件路径destPath- 目标路径,monitor- 上传进度监控,通过实现此接口完成进度显示mode-Sftp.Mode模式- Returns:
- this
-
put
public Sftp put(InputStream srcStream, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, Sftp.Mode mode) 将本地数据流上传到目标服务器,目标文件名为destPath,目标必须为文件- Parameters:
srcStream- 本地的数据流destPath- 目标路径,monitor- 上传进度监控,通过实现此接口完成进度显示mode-Sftp.Mode模式- Returns:
- this
-
download
Description copied from class:AbstractFtp下载文件- Specified by:
downloadin classAbstractFtp- Parameters:
src- 文件路径dest- 输出文件或目录
-
download
递归获取远程文件- Specified by:
downloadin classAbstractFtp- Parameters:
source- 服务器目录dest- 本地目录
-
download
下载文件到OutputStream中- Parameters:
src- 源文件路径,包括文件名out- 目标流
-
upload
上传文件到指定目录,可选:1. path为null或""上传到当前路径 2. path为相对路径则相对于当前路径的子路径 3. path为绝对路径则上传到此路径
- Parameters:
destPath- 服务端路径,可以为null或者相对路径或绝对路径fileName- 文件名fileStream- 文件流- Returns:
- 是否上传成功
-
get
获取远程文件- Parameters:
src- 远程文件路径dest- 目标文件路径- Returns:
- this
-
get
获取远程文件- Parameters:
src- 远程文件路径out- 目标流- Returns:
- this
-
close
public void close()
-