Class JschSftp
java.lang.Object
org.miaixz.bus.extra.ftp.AbstractFtp
org.miaixz.bus.extra.ssh.provider.jsch.JschSftp
- All Implemented Interfaces:
Closeable,AutoCloseable,Ftp
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.miaixz.bus.extra.ftp.AbstractFtp
ftpConfigFields inherited from interface org.miaixz.bus.extra.ftp.Ftp
DEFAULT_CHARSET -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean打开指定目录,如果指定路径非目录或不存在抛出异常voidclose()boolean删除文件夹及其文件夹下的所有文件boolean删除文件void下载文件voiddownload(String src, OutputStream out) 下载文件到OutputStream中get(String src, OutputStream out) 获取远程文件获取远程文件com.jcraft.jsch.ChannelSftp获取SFTP通道客户端getFileStream(String path) 读取FTP服务器上的文件为输入流home()获取HOME路径voidinit()初始化boolean判断给定路径是否为目录遍历某个目录下所有文件或目录,不会递归遍历遍历某个目录下所有文件或目录,不会递归遍历 此方法自动过滤"."遍历某个目录下所有目录,不会递归遍历List<com.jcraft.jsch.ChannelSftp.LsEntry> 遍历某个目录下所有文件或目录,生成LsEntry列表,不会递归遍历 此方法自动过滤"."List<com.jcraft.jsch.ChannelSftp.LsEntry> 遍历某个目录下所有文件或目录,生成LsEntry列表,不会递归遍历 此方法自动过滤"."遍历某个目录下所有文件,不会递归遍历boolean在当前远程目录(工作目录)下创建新的目录static JschSftp构造static JschSftp构造put(InputStream srcStream, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, JschSftp.Mode mode) 将本地数据流上传到目标服务器,目标文件名为destPath,目标必须为文件将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。put(String srcFilePath, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, JschSftp.Mode mode) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。put(String srcFilePath, String destPath, JschSftp.Mode mode) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。pwd()远程当前目录如果连接超时的话,重新进行连接voidrecursiveDownloadFolder(String sourcePath, File destDir) 递归下载FTP服务器上文件到本地(文件目录和服务器同步)toString()void将本地文件或者文件夹同步(覆盖)上传到远程路径booleanuploadFile(String destPath, File file) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与file文件名相同。voiduploadFile(String destPath, String fileName, InputStream fileStream) 上传文件到指定目录,可选:Methods inherited from class org.miaixz.bus.extra.ftp.AbstractFtp
download, exist, getConfig, mkDirs
-
Constructor Details
-
JschSftp
-
JschSftp
-
JschSftp
构造- Parameters:
session-Sessioncharset- 编码timeOut- 超时时间,单位毫秒
-
JschSftp
构造- Parameters:
channel-ChannelSftpcharset- 编码timeOut- 超时时间,单位毫秒
-
-
Method Details
-
of
-
of
-
init
public void init()初始化 -
reconnectIfTimeout
-
getClient
public com.jcraft.jsch.ChannelSftp getClient()获取SFTP通道客户端- Returns:
- 通道客户端
-
pwd
-
home
-
ls
-
lsDirs
-
lsFiles
-
ls
遍历某个目录下所有文件或目录,不会递归遍历 此方法自动过滤"."和".."两种目录- Parameters:
path- 遍历某个目录下所有文件或目录predicate- 文件或目录过滤器,可以实现过滤器返回自己需要的文件或目录名列表,Predicate.test(Object)为true保留- Returns:
- 目录或文件名列表
-
lsEntries
-
lsEntries
public List<com.jcraft.jsch.ChannelSftp.LsEntry> lsEntries(String path, Predicate<com.jcraft.jsch.ChannelSftp.LsEntry> predicate) 遍历某个目录下所有文件或目录,生成LsEntry列表,不会递归遍历 此方法自动过滤"."和".."两种目录- Parameters:
path- 遍历某个目录下所有文件或目录predicate- 文件或目录过滤器,可以实现过滤器返回自己需要的文件或目录名列表,Predicate.test(Object)为true保留- Returns:
- 目录或文件名列表
-
mkdir
-
isDir
-
cd
打开指定目录,如果指定路径非目录或不存在抛出异常- Parameters:
directory- directory- Returns:
- 是否打开目录
- Throws:
org.miaixz.bus.core.lang.exception.InternalException- 进入目录失败异常
-
delFile
-
delDir
删除文件夹及其文件夹下的所有文件- Parameters:
dirPath- 文件夹路径- Returns:
- boolean 是否删除成功
-
upload
-
uploadFile
-
uploadFile
上传文件到指定目录,可选:1. path为null或""上传到当前路径 2. path为相对路径则相对于当前路径的子路径 3. path为绝对路径则上传到此路径
- Parameters:
destPath- 服务端路径,可以为null或者相对路径或绝对路径fileName- 文件名fileStream- 文件流
-
put
-
put
将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。- Parameters:
srcFilePath- 本地文件路径destPath- 目标路径,mode-JschSftp.Mode模式- Returns:
- this
-
put
public JschSftp put(String srcFilePath, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, JschSftp.Mode mode) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与srcFilePath文件名相同。- Parameters:
srcFilePath- 本地文件路径destPath- 目标路径,monitor- 上传进度监控,通过实现此接口完成进度显示mode-JschSftp.Mode模式- Returns:
- this
-
put
public JschSftp put(InputStream srcStream, String destPath, com.jcraft.jsch.SftpProgressMonitor monitor, JschSftp.Mode mode) 将本地数据流上传到目标服务器,目标文件名为destPath,目标必须为文件- Parameters:
srcStream- 本地的数据流destPath- 目标路径,monitor- 上传进度监控,通过实现此接口完成进度显示mode-JschSftp.Mode模式- Returns:
- this
-
download
-
download
下载文件到OutputStream中- Parameters:
src- 源文件路径,包括文件名out- 目标流- See Also:
-
recursiveDownloadFolder
-
get
-
get
获取远程文件- Parameters:
src- 远程文件路径out- 目标流- Returns:
- this
-
getFileStream
Description copied from interface:Ftp读取FTP服务器上的文件为输入流- Parameters:
path- 文件路径- Returns:
InputStream
-
close
public void close() -
toString
-