[
https://issues.apache.org/jira/browse/NET-349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12980291#action_12980291
]
Max edited comment on NET-349 at 1/11/11 2:53 PM:
--------------------------------------------------
One solution:
Modify UnixFTPEntryParser.java:
private static final String REGEX =
"+(?s)+([bcdelfmpSs-])"
Modify FTPFileEntryParserImpl.java:
public String readNextEntry(BufferedReader reader) throws IOException
{
-return reader.readLine();-
+String entry = reader.readLine();+
+String line = null;+
+do+
+{+
+reader.mark(256);+
+line = reader.readLine();+
+if(line == null || line.equals("") || matches(line))+
+{+
+reader.reset();+
+line = null;+
+break;+
+}+
+else+
+{+
+entry += "\n"+line;+
+}+
+} while(StringUtils.isNotBlank(line));+
+return entry;+
}
In this case listing comes through just fine. Deletion however is not possible,
since servers do not support deletion of file names with special characters.
was (Author: maxf):
One solution:
Modify UnixFTPEntryParser.java:
private static final String REGEX =
"+(?s)+([bcdelfmpSs-])"
Modify FTPFileEntryParserImpl.java:
public String readNextEntry(BufferedReader reader) throws IOException
{
-return reader.readLine();-
+String entry = reader.readLine();+
+String line = null;+
+do+
+{+
+reader.mark(256);+
+line = reader.readLine();+
+if(line == null || line.equals("") || matches(line))+
+{+
+reader.reset();+
+line = null;+
+break;+
+}+
+else+
+{+
+entry += "\n"+line;+
+}+
+} while(StringUtils.isNotBlank(line));+
+return entry;+
}
> FTPClient.listFiles() returns a file entry containing a new line character
> only up to the new line character
> ------------------------------------------------------------------------------------------------------------
>
> Key: NET-349
> URL: https://issues.apache.org/jira/browse/NET-349
> Project: Commons Net
> Issue Type: Bug
> Components: FTP
> Affects Versions: 2.2
> Environment: Linux localhost 2.6.9-22.ELsmp #1 SMP Mon Sep 19
> 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux
> RedHat Enterprise Linux
> Reporter: Max
> Priority: Minor
>
> Create 3 files
> File with new lines:
> echo > 'test
> line1
> line2
> line3.txt'
> 2 files without:
> echo > test1
> echo > testz
> connect via ftpclient to the server containing these files, switch to that
> directory and call listFiles().
> The file with new lines will return as test and trailing components of the
> path will be missing.
> FTPFileEntryParserImpl.readNextEntry() is using BufferedReader.readLine() to
> identify the end of the entry. May be some other approach is needed to
> identify the end of the entry, since file names with new lines although
> undesired, are actually valid in unix environments.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.