[ 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