小编use*_*745的帖子

SftpChannel.rename 失败但 mv 命令有效。可能的原因是什么?

我遇到了这个问题,其中 sftpChannel.rename 失败,错误不是很有帮助,我想不出原因。目标中不存在文件。权限很好,因为 mv 命令有效。我将列出文件和文件夹的权限。有人有任何想法吗?我不必使用该目录,但不知道为什么会失败令人沮丧。

这是一段测试代码。RemoteFile 只是 sftpChannel 的包装器,因此我可以检查文件/目录是否存在并在必要时删除文件或创建目录:

 String file = "/u01/apps/tpms/applstg2/ken_test/TestFile";
 String destDir = "/usr/local/jboss/server/applstg2/backup/"; // Caused by: 4: Failure
 //String destDir = "/u01/apps/tpms/applstg2/ken_test/backup/"; // Success
 RemoteFile remoteFile = new RemoteFile(file, ssh.openSftpChannel());
 remoteFile.rename(destDir + "/TestFile");
Run Code Online (Sandbox Code Playgroud)

这是失败的行:

sftpChannel.rename(file, newName);
Run Code Online (Sandbox Code Playgroud)

这是跟踪(我删除了所有 JUnit 和 sun.reflect 跟踪):

Error renaming file /u01/apps/tpms/applstg2/ken_test/TestFile to /usr/local/jboss/server/applstg2/backup//TestFile
at com.framework.remote.RemoteFile.rename(RemoteFile.java:82)
at com.framework.remote.RemoteFileTest.renameFile(RemoteFileTest.java:56)
Caused by: 4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1923)
at com.framework.remote.RemoteFile.rename(RemoteFile.java:79)
Run Code Online (Sandbox Code Playgroud)

权限:

drwxrwxr-x  2 applstg2 applstg2   4096 May  2 22:09 ken_test
-rw-rw-r-- 1 applstg2 applstg2 61595086 …
Run Code Online (Sandbox Code Playgroud)

java sftp jsch file-rename file-move

2
推荐指数
1
解决办法
841
查看次数

标签 统计

file-move ×1

file-rename ×1

java ×1

jsch ×1

sftp ×1