Class SshjSftp
java.lang.Object
org.miaixz.bus.extra.ftp.AbstractFtp
org.miaixz.bus.extra.ssh.provider.sshj.SshjSftp
- All Implemented Interfaces:
Closeable,AutoCloseable,Ftp
在使用jsch 进行sftp协议下载文件时,总是中文乱码,而该框架源码又不允许设置编码。故:站在巨人的肩膀上,此类便孕育而出。
基于sshj 框架适配。 参考:https://github.com/hierynomus/sshj
- Since:
- Java 17+
- Author:
- Kimi Liu
-
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打开指定目录,具体逻辑取决于实现,例如在FTP中,进入失败返回false, SFTP中则抛出异常voidclose()执行Linux 命令booleancontainsFile(String fileDir) 是否包含该文件boolean删除文件夹及其文件夹下的所有文件boolean删除指定目录下的指定文件void下载文件getFileStream(String path) 读取远程文件输入流voidinit()SSH 初始化并创建一个sftp客户端遍历某个目录下所有文件和目录,不会递归遍历boolean在当前远程目录(工作目录)下创建新的目录static SshjSftp构造static SshjSftp构造static SshjSftp构造pwd()远程当前目录(工作目录)如果连接超时的话,重新进行连接voidrecursiveDownloadFolder(String sourcePath, File destDir) 递归下载FTP服务器上文件到本地(文件目录和服务器同步), 服务器上有新文件会覆盖本地文件booleanuploadFile(String destPath, File file) 将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与file文件名相同。 覆盖模式Methods inherited from class org.miaixz.bus.extra.ftp.AbstractFtp
download, exist, getConfig, mkDirs
-
Constructor Details
-
SshjSftp
构造- Parameters:
config- FTP配置
-
SshjSftp
构造- Parameters:
sshClient-SSHClientcharset- 编码
-
-
Method Details
-
of
构造- Parameters:
sshHost- 主机sshUser- 用户名sshPass- 密码- Returns:
- SshjSftp
-
of
构造- Parameters:
sshHost- 主机sshPort- 端口sshUser- 用户名sshPass- 密码- Returns:
- SshjSftp
-
of
public static SshjSftp of(String sshHost, int sshPort, String sshUser, String sshPass, Charset charset) 构造- Parameters:
sshHost- 主机sshPort- 端口sshUser- 用户名sshPass- 密码charset- 编码- Returns:
- SshjSftp
-
init
public void init()SSH 初始化并创建一个sftp客户端 -
reconnectIfTimeout
Description copied from interface:Ftp如果连接超时的话,重新进行连接- Returns:
- this
-
cd
Description copied from interface:Ftp打开指定目录,具体逻辑取决于实现,例如在FTP中,进入失败返回false, SFTP中则抛出异常- Parameters:
directory- directory- Returns:
- 是否打开目录
-
pwd
Description copied from interface:Ftp远程当前目录(工作目录)- Returns:
- 远程当前目录
-
mkdir
Description copied from interface:Ftp在当前远程目录(工作目录)下创建新的目录- Parameters:
dir- 目录名- Returns:
- 是否创建成功
-
ls
Description copied from interface:Ftp遍历某个目录下所有文件和目录,不会递归遍历- Parameters:
path- 需要遍历的目录- Returns:
- 文件和目录列表
-
delFile
Description copied from interface:Ftp删除指定目录下的指定文件- Parameters:
path- 目录路径- Returns:
- 是否存在
-
delDir
Description copied from interface:Ftp删除文件夹及其文件夹下的所有文件- Parameters:
dirPath- 文件夹路径- Returns:
- boolean 是否删除成功
-
uploadFile
Description copied from interface:Ftp将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与file文件名相同。 覆盖模式- Parameters:
destPath- 服务端路径,可以为null或者相对路径或绝对路径file- 需要上传的文件- Returns:
- 是否成功
-
download
Description copied from interface:Ftp下载文件- Parameters:
path- 文件路径outFile- 输出文件或目录
-
recursiveDownloadFolder
Description copied from interface:Ftp递归下载FTP服务器上文件到本地(文件目录和服务器同步), 服务器上有新文件会覆盖本地文件- Parameters:
sourcePath- ftp服务器目录destDir- 本地目录
-
getFileStream
读取远程文件输入流- Parameters:
path- 远程文件路径- Returns:
InputStream
-
close
public void close() -
containsFile
是否包含该文件- Parameters:
fileDir- 文件绝对路径- Returns:
- true:包含 false:不包含
-
command
执行Linux 命令- Parameters:
exec- 命令- Returns:
- 返回响应结果
-