【发布时间】:2020-08-17 04:08:11
【问题描述】:
我正在尝试使用重命名功能并不断收到此错误。 堆栈跟踪:
3: %RNFR-bad%
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1950)
...
这是我用来移动文件的方法
private void moveFile(String sourcePath, String destinationPath) {
try {
System.out.println("Move: " + sourcePath + " to: " + destinationPath);
sftp.rename(sourcePath, destinationPath); //sftp = ChannelSftp
} catch (SftpException e) {
e.printStackTrace();
}
}
这是我的 println 的输出:
Move: /SND/OUTBOUND/TestOutboundFile1.txt to: /SND/OUTBOUND/PROCESSING/TestOutboundFile1.txt
我已经尝试了一些其他的选项(get then put、多个连接等),但总是出现相同的错误,或者它只是坐着挂起(这发生在 get then put 方法中)。我在网上看到的一切都说这应该和我的方法一样简单,但我似乎无法让它发挥作用。也找不到任何有用的“RNFR-bad”错误。
目标目录已存在且为空。我错过了什么?非常感谢任何帮助。
编辑:这最终是一个权限问题,并且在管理员授予我的帐户正确的权限后,上面发布的代码运行良好。我能够创建和删除文件和目录,但在修改帐户权限之前无法重命名文件。
【问题讨论】:
-
您可以使用任何命令行/GUI SFTP 客户端移动文件吗?
-
@MartinPrikryl 不,我得到相同的 %RNFR-bad% 错误。
-
好的,那么你没有编程问题。请在Super User 或Server Fault 询问。或者更好地支持您的 SFTP 服务器供应商/提供商。
-
@MartinPrikryl 谢谢好友。因为除了移动文件(重命名)之外我可以做任何事情,我认为我做错了什么。我什至没有想过在我的代码之外尝试。我在此主题的其他问题上遇到了您的 cmets/answers,再次感谢。