当我尝试将文件从fileDirectory1移动到fileDirectory2时。有没有办法在一个FTP服务器中将该文件从一个路径移动或复制到另一个路径。请任何人都可以帮助我。
以下是我的示例代码:
String existingfile = file.getFilename();
String newfile =file.getFilename();
String fileDirectory1 = clients.getFtpFolder() + "/" + "unprocessed" + "/";
String fileDirectory2 = clients.getFtpFolder() + "/" + "processed" + "/";
sftpChannel.cd(fileDirectory1);
if (sftpChannel.get(newfile) != null){
sftpChannel.rename(fileDirectory1 + newfile ,
fileDirectory2 + newfile );
sftpChannel.cd(fileDirectory2);
sftpChannel.rm(existingfile );
}
控制台:
Caused by:2: No such file
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
我试过How to move file from directory A to directory B in remote server?
Move a directory in remote server to another location in the same remote server using jsch
答案 0 :(得分:1)
您可以尝试ChannelSftp#rename
:
sftpChannel.rename(oldPath, newPath);
请注意,oldPath
和newPath
可以是当前远程工作目录或绝对远程路径的相对路径。
<强>编辑:强>
似乎您使用sftpChannel.cd(fileDirectory1)
将工作目录更改为fileDirectory1
,并假设newfile
位于该目录中,您可以尝试使用类似
sftpChannel.rename(filename, destFilePath);
请注意,filename
是文件名,destFilePath
是目标的远程文件路径。我之前使用它并且工作正常。
您的代码将类似于:
sftpChannel.rename(newfile, fileDirectory2 + newfile);
你的代码中的。希望这可以帮助