[ 
https://issues.apache.org/jira/browse/VFS-620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15402736#comment-15402736
 ] 

Bernd Eckenfels edited comment on VFS-620 at 8/1/16 8:23 PM:
-------------------------------------------------------------

It Looks to me the URLs are wrong. If the files are in /home/user1 you must 
speficy the full path Name in the URL. VFS has no Support for relative 
directories (in URLs) (unfortunatelly).

(However if the path for the source is correct (the test Output somehow 
suggests that as the source exists) maybe the Problem is more on the 
destionation side and has nothign to do with the home Directory. Can you check 
the Server logfile what command it rejected (and why)?.

Is the target (parent) Directory existing and writeable?


was (Author: b.eckenfels):
It Looks to me the URLs are wrong. If the files are in /home/user1 you must 
speficy the full path Name in the URL. VFS has no Support for relative 
directories (in URLs) (unfortunatelly).

> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> -------------------------------------------------------------------
>
>                 Key: VFS-620
>                 URL: https://issues.apache.org/jira/browse/VFS-620
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.1
>         Environment: ubuntu vsftpd
>            Reporter: stevezhuang
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
>         FileObject toFileObject = null;
>         try {
>             StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
>             fsManager.init();
>             FileSystemOptions fsOpts = new FileSystemOptions();
>             FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
>             FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
>             UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "<user>", "<password>");
>             
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
>             fileObject = fsManager.resolveFile("ftp://<Replaced 
> address>/test/test.txt", fsOpts);
>             System.out.println("File exists:" + fileObject.exists());
>             toFileObject = fsManager.resolveFile("ftp://<Replaced 
> address>/test1/test1.txt", fsOpts);
>             System.out.println("File exists:" + toFileObject.exists());
>             if (!toFileObject.exists()) {
>                 toFileObject.createFile();
>             }
>             fileObject.moveTo(toFileObject);
>         } catch (FileSystemException ex) {
>             ex.printStackTrace();
>         } finally {
>             if (fileObject != null) {
>                 try {
>                     fileObject.close();
>                 } catch (FileSystemException ex) {
>                 }
>             }
>             if (toFileObject != null) {
>                 try {
>                     toFileObject.close();
>                 } catch (FileSystemException ex) {
>                 }
>             }
>         }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp://<Replaced address>/test/test.txt" to "ftp://<Replaced 
> address>/test1/test1.txt".
>       at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>       at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp://<Replaced address>/test/test.txt" to "ftp://<Replaced 
> address>/test1/test1.txt".
>       at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>       at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to