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

public class SshjSftp extends AbstractFtp
在使用jsch 进行sftp协议下载文件时,总是中文乱码,而该框架源码又不允许设置编码。故:站在巨人的肩膀上,此类便孕育而出。

基于sshj 框架适配。 参考:https://github.com/hierynomus/sshj

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • SshjSftp

      public SshjSftp(FtpConfig config)
      构造
      Parameters:
      config - FTP配置
    • SshjSftp

      public SshjSftp(net.schmizz.sshj.SSHClient sshClient, Charset charset)
      构造
      Parameters:
      sshClient - SSHClient
      charset - 编码
  • Method Details

    • of

      public static SshjSftp of(String sshHost, String sshUser, String sshPass)
      构造
      Parameters:
      sshHost - 主机
      sshUser - 用户名
      sshPass - 密码
      Returns:
      SshjSftp
    • of

      public static SshjSftp of(String sshHost, int sshPort, String sshUser, String sshPass)
      构造
      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

      public AbstractFtp reconnectIfTimeout()
      Description copied from interface: Ftp
      如果连接超时的话,重新进行连接
      Returns:
      this
    • cd

      public boolean cd(String directory)
      Description copied from interface: Ftp
      打开指定目录,具体逻辑取决于实现,例如在FTP中,进入失败返回false, SFTP中则抛出异常
      Parameters:
      directory - directory
      Returns:
      是否打开目录
    • pwd

      public String pwd()
      Description copied from interface: Ftp
      远程当前目录(工作目录)
      Returns:
      远程当前目录
    • mkdir

      public boolean mkdir(String dir)
      Description copied from interface: Ftp
      在当前远程目录(工作目录)下创建新的目录
      Parameters:
      dir - 目录名
      Returns:
      是否创建成功
    • ls

      public List<String> ls(String path)
      Description copied from interface: Ftp
      遍历某个目录下所有文件和目录,不会递归遍历
      Parameters:
      path - 需要遍历的目录
      Returns:
      文件和目录列表
    • delFile

      public boolean delFile(String path)
      Description copied from interface: Ftp
      删除指定目录下的指定文件
      Parameters:
      path - 目录路径
      Returns:
      是否存在
    • delDir

      public boolean delDir(String dirPath)
      Description copied from interface: Ftp
      删除文件夹及其文件夹下的所有文件
      Parameters:
      dirPath - 文件夹路径
      Returns:
      boolean 是否删除成功
    • uploadFile

      public boolean uploadFile(String destPath, File file)
      Description copied from interface: Ftp
      将本地文件上传到目标服务器,目标文件名为destPath,若destPath为目录,则目标文件名将与file文件名相同。 覆盖模式
      Parameters:
      destPath - 服务端路径,可以为null 或者相对路径或绝对路径
      file - 需要上传的文件
      Returns:
      是否成功
    • download

      public void download(String path, File outFile)
      Description copied from interface: Ftp
      下载文件
      Parameters:
      path - 文件路径
      outFile - 输出文件或目录
    • recursiveDownloadFolder

      public void recursiveDownloadFolder(String sourcePath, File destDir)
      Description copied from interface: Ftp
      递归下载FTP服务器上文件到本地(文件目录和服务器同步), 服务器上有新文件会覆盖本地文件
      Parameters:
      sourcePath - ftp服务器目录
      destDir - 本地目录
    • getFileStream

      public InputStream getFileStream(String path)
      读取远程文件输入流
      Parameters:
      path - 远程文件路径
      Returns:
      InputStream
    • close

      public void close()
    • containsFile

      public boolean containsFile(String fileDir)
      是否包含该文件
      Parameters:
      fileDir - 文件绝对路径
      Returns:
      true:包含 false:不包含
    • command

      public String command(String exec)
      执行Linux 命令
      Parameters:
      exec - 命令
      Returns:
      返回响应结果