Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在远程服务器中将文件从目录A移动到目录B?_Java_Sftp_Jsch - Fatal编程技术网

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

Java 如何在远程服务器中将文件从目录A移动到目录B?,java,sftp,jsch,Java,Sftp,Jsch,我正在使用JSch连接到一个由GWT制作的网站中的SFTP。 我读过一个关于sftpChannel.get(),sftpChannel.rename(),sftpChannel.rm() 但我没有找到一种解决方案,可以将文件从远程服务器a目录复制到远程服务器b目录 例如,我想将文件从/appl/user/home/test/temp复制到/appl/user/home/test/。Filename=abc.jpg 我在这里呆了几个小时,因为网络上的大多数解决方案都是将文件从远程服务器上传到本地,

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

但我没有找到一种解决方案,可以将文件从远程服务器
a
目录复制到远程服务器
b
目录

例如,我想将文件从
/appl/user/home/test/temp
复制到
/appl/user/home/test/
。Filename=
abc.jpg

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

String existingfile = "abc.jpg";
String newfile = "123.jpg";
FileDirectory = "/appl/user/home/test/";
sftp.cd(FileDirectory+"temp/");
sftp.rename(newfile, FileDirectory+newfile);
比如说,
abc.jpg
存在于
/appl/user/home/test/

我在
/appl/user/home/test/temp/
中上传了一个
123.jpg

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


我该怎么办?

您可以编写一个普通的Java
FileInputStream
FileOutputStream
代码,而不是使用像这样的路径
/appl/user/home/test/temp
使用完整路径及其IP地址或远程服务器名称+您的路径,例如
myremoteserver/appl/user/home/test/temp>看起来像这样
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 );
}

但我不想将文件传输到客户端。我的SFTP服务器位于Unix,因此它是绝对路径。FileInputStream和FileOutputStream不是正在将文件从SFTP制作到本地(客户端)吗?我认为我不应该将文件从SFTP(服务器端)复制到客户端,然后再复制到SFTP。我有一个问题,第五行的if条件中是否有SFTP.get(newFile)将把新文件下载到运行该程序的系统中?