You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bogdan Drozdowski (JIRA)" <ji...@apache.org> on 2012/06/27 18:36:44 UTC

[jira] [Commented] (NET-449) listFiles bug with folder that begins with "-"

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

Bogdan Drozdowski commented on NET-449:
---------------------------------------

Some servers (most?) probably pass the argument to the "ls" command, hence the results. One workaround is provided in the listing above - use absolute paths. Another workaround is: if the path to be listed starts with a dash, prepend a "./" to it, but this will work only on Unix-like servers or those which implement TVFS. So, there would be need to call SYST and FEAT on every connect, but what if the server doesn't support FEAT, TVFS or SYST (or replies that it's not a Unix)?
I think it should be the user who should decide to use any of these workarounds (they can do it themselves), but the documentation (at least the Javadoc comment) should mention this case.
                
> listFiles bug with folder that begins with "-"
> ----------------------------------------------
>
>                 Key: NET-449
>                 URL: https://issues.apache.org/jira/browse/NET-449
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 3.1
>            Reporter: Stéphane Verger
>
> FTP Server status:
> {code}
> root@xxx-srv:/data/Library# tree -A
> .
> ├── -dash
> │   ├── -dash.txt
> │   ├── file1.txt
> │   └── file2.txt
> └── test
>     ├── file2.txt
>     └── file.txt
> {code}
> Test code:
> {code} 
> final org.apache.commons.net.ftp.FTPClient ftp = new org.apache.commons.net.ftp.FTPClient();
> 		    ftp.connect(host, port);
> 		    ftp.login(login, pwd);
> 		    
> 		    System.out.println("PWD: " + ftp.printWorkingDirectory());
> 		    final FTPFile[] listFiles = ftp.listFiles();
> 		    for (int i = 0; i < listFiles.length; i++) {
> 		        System.out.println("[" + i + "] " + listFiles[i]);
> 		    }
> 		    
> 		    System.out.println("Files in /-dash");
> 		    final FTPFile[] listFiles2 = ftp.listFiles("/-dash");
> 		    for (int i = 0; i < listFiles2.length; i++) {
> 		        System.out.println("[" + i + "] " + listFiles2[i]);
> 		    }
> 		    
> 		    System.out.println("Files in -dash");
> 		    final FTPFile[] listFiles3 = ftp.listFiles("-dash");
> 		    for (int i = 0; i < listFiles3.length; i++) {
> 		        System.out.println("[" + i + "] " + listFiles3[i]);
> 		    }
> {code} 
> results:
> {code} 
> PWD: /
> [0] -dash
> [1] test
> Files in /-dash
> [0] -dash.txt
> [1] file1.txt
> [2] file2.txt
> Files in -dash
> [0] -dash
> [1] .
> [2] ..
> [3] test
> {code} 
> When listing "-dash", it list the current directory instead of the destination one.
> If I do the same test with the folder test, this time it works as expected.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira