使用 JSch 将文件放入远程目录,如果该目录不存在,则创建该文件

2022-09-02 02:36:19

我想使用Jsch库和SFTP协议将文件复制到远程目录。如果远程主机上的目录不存在,请创建它。

在API文档中,http://epaul.github.com/jsch-documentation/javadoc/,我注意到在put方法中有一种“模式”,但它只是传输模式:- 传输模式,RESUME,APPEND,OVERWRITE之一。

有没有一种简单的方法可以做到这一点,而不必编写自己的代码来检查是否存在,然后递归创建一个目录?


答案 1

据我所知不是。我使用以下代码来实现相同的目标:

String[] folders = path.split( "/" );
for ( String folder : folders ) {
    if ( folder.length() > 0 ) {
        try {
            sftp.cd( folder );
        }
        catch ( SftpException e ) {
            sftp.mkdir( folder );
            sftp.cd( folder );
        }
    }
}

其中 是对象。sftpChannelSftp


答案 2

这就是我在JSch中检查目录是否存在的方法。

如果目录不存在,则创建目录

ChannelSftp channelSftp = (ChannelSftp)channel;
String currentDirectory=channelSftp.pwd();
String dir="abc";
SftpATTRS attrs=null;
try {
    attrs = channelSftp.stat(currentDirectory+"/"+dir);
} catch (Exception e) {
    System.out.println(currentDirectory+"/"+dir+" not found");
}

if (attrs != null) {
    System.out.println("Directory exists IsDir="+attrs.isDir());
} else {
    System.out.println("Creating dir "+dir);
    channelSftp.mkdir(dir);
}

推荐