Apache VFS SFTP moveTo命令失败

时间:2014-02-17 05:59:35

标签: java apache sftp jsch vfs

我正在使用Apache vfs sftp将文件复制到远程linux框,然后重命名它。 复制工作正常,但当我尝试重命名该文件时,它失败了。 我使用的是vfs 2.0和jsch 0.1.50

Source(remoteFileTmp)       : /tmp/abc.txt
Destination(remoteFileDest) : /home/myName/work/abc.txt

我使用的命令如下:

remoteFileTmp.moveTo(remoteFileDest);

我得到的例外情况如下:

Exception in thread "main" java.lang.RuntimeException: org.apache.commons.vfs2.FileSystemException: Could not rename "sftp://hostname/tmp/abc.txt" to "sftp://hostname/home/myName/work/abc.txt".
    at com.transfer.SFTPTransfer.uploadRename(SFTPTransfer.java:85)
    at com.transfer.MainClass.main(MainClass.java:23)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename "sftp://hostname/tmp/abc.txt" to "sftp://hostname/tmp/abc.txt" to "sftp://hostname/home/myName/work/abc.txt".
    at org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1116)
    at com.transfer.SFTPTransfer.uploadRename(SFTPTransfer.java:59)
    ... 1 more
Caused by: 4: Failure
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2833)
    at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1910)
    at org.apache.commons.vfs2.provider.sftp.SftpFileObject.doRename(SftpFileObject.java:289)
    at org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1102)
    ... 2 more

目录/ home / myName / work存在。

注意:当我尝试在同一文件夹中移动(重命名)文件时,它可以正常工作。 即以下输入重命名是succesfful。

source = /tmp/abc.txt
destination = /tmp/abc.txt_renamed

它是否仅支持在同一目录中重命名?

1 个答案:

答案 0 :(得分:1)

这是由于在SFTP上执行moveTo时Apache VFS库中的一个未解决问题引起的: - (

https://issues.apache.org/jira/browse/VFS-590

和这个

https://issues.apache.org/jira/browse/VFS-589