org.apache.commons.net.ftp.parser

## Class UnixFTPEntryParser

- java.lang.Object
- - org.apache.commons.net.ftp.FTPFileEntryParserImpl
  - - org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl
    - - org.apache.commons.net.ftp.parser.ConfigurableFTPFileEntryParserImpl
      - - org.apache.commons.net.ftp.parser.UnixFTPEntryParser

- All Implemented Interfaces:
    Configurable, FTPFileEntryParser

      public class UnixFTPEntryParser
      extends ConfigurableFTPFileEntryParserImpl

  Implementation FTPFileEntryParser and FTPFileListParser for standard Unix Systems.

  This class is based on the logic of Daniel Savarese's DefaultFTPListParser, but adapted to use regular expressions and to fit the new FTPFileEntryParser interface.

  See Also:
    `FTPFileEntryParser (for usage instructions)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `(package private) static String` | `DEFAULT_DATE_FORMAT`
    `(package private) static String` | `DEFAULT_RECENT_DATE_FORMAT`
    `static FTPClientConfig` | `NUMERIC_DATE_CONFIG` Some Linux distributions are now shipping an FTP server which formats file listing dates in an all-numeric format: `"yyyy-MM-dd HH:mm`.
    `(package private) static String` | `NUMERIC_DATE_FORMAT`
    `(package private) boolean` | `trimLeadingSpaces` Whether leading spaces are trimmed from file names this was the case for the original implementation.

    - ### Fields inherited from class org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl

      `_matcher_`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `UnixFTPEntryParser()` Constructs a new instance.
    `UnixFTPEntryParser(FTPClientConfig config)` Constructs a new instance with something other than the default configuration.
    `UnixFTPEntryParser(FTPClientConfig config, boolean trimLeadingSpaces)` Constructs a new instance with something other than the default configuration.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected FTPClientConfig` | `getDefaultConfiguration()` Gets a new default configuration to be used when this class is instantiated without a `FTPClientConfig` parameter being specified.
    `FTPFile` | `parseFTPEntry(String entry)` Parses a line of a Unix (standard) FTP server file listing and converts it into a usable format in the form of an `FTPFile` instance.
    `List<String>` | `preParse(List<String> original)` Preparses the list to discard "total nnn" lines.

    - ### Methods inherited from class org.apache.commons.net.ftp.parser.ConfigurableFTPFileEntryParserImpl

      `configure, parseTimestamp`

    - ### Methods inherited from class org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl

      `getGroupCnt, getGroupsAsString, group, matches, setRegex, setRegex`

    - ### Methods inherited from class org.apache.commons.net.ftp.FTPFileEntryParserImpl

      `readNextEntry`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_DATE_FORMAT

          static final String DEFAULT_DATE_FORMAT

      See Also:
        Constant Field Values

    - #### DEFAULT_RECENT_DATE_FORMAT

          static final String DEFAULT_RECENT_DATE_FORMAT

      See Also:
        Constant Field Values

    - #### NUMERIC_DATE_CONFIG

          public static final FTPClientConfig NUMERIC_DATE_CONFIG

      Some Linux distributions are now shipping an FTP server which formats file listing dates in an all-numeric format: `"yyyy-MM-dd HH:mm`. This is a very welcome development, and hopefully it will soon become the standard. However, since it is so new, for now, and possibly forever, we merely accommodate it, but do not make it the default.

      For now end users may specify this format only via `UnixFTPEntryParser(FTPClientConfig)`. Steve Cohen - 2005-04-17

    - #### NUMERIC_DATE_FORMAT

          static final String NUMERIC_DATE_FORMAT

      See Also:
        Constant Field Values

    - #### trimLeadingSpaces

          final boolean trimLeadingSpaces

      Whether leading spaces are trimmed from file names this was the case for the original implementation.

  - ### Constructor Detail

    - #### UnixFTPEntryParser

          public UnixFTPEntryParser()

      Constructs a new instance.
      Throws:
        `IllegalArgumentException` - Thrown if the regular expression is unparseable. Should not be seen under normal conditions. If this exception is seen, this is a sign that `REGEX` is not a valid regular expression.

    - #### UnixFTPEntryParser

          public UnixFTPEntryParser(FTPClientConfig config)

      Constructs a new instance with something other than the default configuration.
      Parameters:
        `config` - The `configuration` object used to configure this parser.
      Throws:
        `IllegalArgumentException` - Thrown if the regular expression is unparseable. Should not be seen under normal conditions. If this exception is seen, this is a sign that `REGEX` is not a valid regular expression.

    - #### UnixFTPEntryParser

          public UnixFTPEntryParser(FTPClientConfig config,
                                    boolean trimLeadingSpaces)

      Constructs a new instance with something other than the default configuration.
      Parameters:
        `config` - The `configuration` object used to configure this parser.
        `trimLeadingSpaces` - if `true`, trim leading spaces from file names
      Throws:
        `IllegalArgumentException` - Thrown if the regular expression is unparseable. Should not be seen under normal conditions. If this exception is seen, this is a sign that `REGEX` is not a valid regular expression.

  - ### Method Detail

    - #### getDefaultConfiguration

          protected FTPClientConfig getDefaultConfiguration()

      Gets a new default configuration to be used when this class is instantiated without a `FTPClientConfig` parameter being specified.
      Specified by:
        `getDefaultConfiguration` in class `ConfigurableFTPFileEntryParserImpl`
      Returns:
        the default configuration for this parser.

    - #### parseFTPEntry

          public FTPFile parseFTPEntry(String entry)

      Parses a line of a Unix (standard) FTP server file listing and converts it into a usable format in the form of an `FTPFile` instance. If the file listing line doesn't describe a file, `null` is returned, otherwise a `FTPFile` instance representing the files in the directory is returned.
      Parameters:
        `entry` - A line of text from the file listing
      Returns:
        An FTPFile instance corresponding to the supplied entry

    - #### preParse

          public List<String> preParse(List<String> original)

      Preparses the list to discard "total nnn" lines.
      Specified by:
        `preParse` in interface `FTPFileEntryParser`
      Overrides:
        `preParse` in class `FTPFileEntryParserImpl`
      Parameters:
        `original` - Original list after it has been created from the server stream
      Returns:
        `original` unmodified.