如何将文件从目录A移动到远程服务器中的目录B?

Jbi*_*999 3 java sftp jsch

我正在使用JSch连接到由GWT制作的网站中的SFTP.我读过的一个小例子sftpChannel.get(),sftpChannel.rename(),sftpChannel.rm()

但我找不到将文件从远程服务器a目录复制到远程服务器b目录的解决方案.

例如,我要复制文件/appl/user/home/test/temp/appl/user/home/test/.文件名= abc.jpg.

我在这里惊呆了几个小时,因为大多数来自网络的解决方案是从远程服务器获取文件到本地,或者从本地上传文件到远程服务器.

String existingfile = "abc.jpg";
String newfile = "123.jpg";
FileDirectory = "/appl/user/home/test/";
sftp.cd(FileDirectory+"temp/");
sftp.rename(newfile, FileDirectory+newfile);
Run Code Online (Sandbox Code Playgroud)

让我们说,abc.jpg存在于/appl/user/home/test/

我上传123.jpg/appl/user/home/test/temp/.

现在,我想移动123.jpg/appl/user/home/test/并删除abc.jpg/appl/user/home/test/.

我该怎么办?

Jbi*_*999 6

似乎SftpChannel.rename();需要使用文件的完整路径而不是cd到我要移动的文件的目录.

String existingfile = "abc.jpg";
String newfile = "123.jpg";
FileDirectory = "/appl/user/home/test/";
sftp.cd(FileDirectory+"temp/");
if (sftp.get( newfile ) != null){
    sftp.rename(FileDirectory + "temp/" + newfile , 
        FileDirectory + newfile );
    sftp.cd(FileDirectory);
    sftp.rm(existingfile );
}
Run Code Online (Sandbox Code Playgroud)