You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bernd Eckenfels (JIRA)" <ji...@apache.org> on 2016/08/01 20:24:20 UTC

[jira] [Comment Edited] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

    [ 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)