Java-使用JSch,但尝试在FTP上移动文件时出错-%RNFR-bad%

问题描述

我正在尝试使用重命名功能,并不断收到此错误。 堆栈跟踪:

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方法发生的)。我在网上看到的所有内容都说,这应该和我的方法一样简单,但是我似乎无法使其正常工作。找不到任何有用的“ RNFR错误错误

目标目录已经存在,并且为空。我想念什么?任何帮助表示赞赏。

编辑:这最终是一个权限问题,并且在管理员为我的帐户授予了正确的权限之后,上面发布的代码可以正常工作。我能够创建和删除文件和目录,但是在修改帐户privs之前无法重命名文件

解决方法

3: %RNFR-bad%

SFTP error code 3表示“权限被拒绝”。这意味着您会收到错误消息,因为您没有远程系统上的权限来执行您要执行的文件移动操作。

“%RNFR不良%”似乎没有意义。我的猜测是远程SFTP服务器正在使用localized messages,并且在这种情况下没有正确的消息,或者它以其他方式出现故障。