Java 如何在远程服务器中将文件从目录A移动到目录B?
我正在使用JSch连接到一个由GWT制作的网站中的SFTP。 我读过一个关于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 我在这里呆了几个小时,因为网络上的大多数解决方案都是将文件从远程服务器上传到本地,
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)将把新文件下载到运行该程序的系统中?