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

Sebb edited comment on NET-449 at 3/5/12 5:51 PM:
--------------------------------------------------

Not sure there's anything Net can do about this.

The parameter to the LIST command is supposed to be a pathname, and it is up to 
the server to determine if it is a file or a directory.

However, the "-" prefix is used by some servers for supporting qualifiers, e.g. 
-a, -l

This obviously has the potential to be confused with a valid pathname.

If the server fails to recognise "-data" as a pathname, then it seems to me 
that this is a bug in the server.
It ought to behave according to the RFCs.
                
      was (Author: s...@apache.org):
    Not sure there's anything Net can do about this.

The parameter to the LIST command is supposed to be a pathname, and it is up to 
the server to determine if it is a file or a directory.

The "-" prefix is used by some servers for supporting qualifiers, e.g. -a.

I don't think there is any way to "escape" the leading "-", at least not one 
that would work on all servers.
The parameter "./-data" would probably work on most FTP servers, but AFAIK 
servers don't have to support that, and some may not do so.
                  
> 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


Reply via email to