Enum Class FileSystem

java.lang.Object
java.lang.Enum<FileSystem>
org.apache.commons.io.FileSystem
All Implemented Interfaces:
Serializable, Comparable<FileSystem>, Constable

public enum FileSystem extends Enum<FileSystem>
Abstracts an OS' file system details, currently supporting the single use case of converting a file name String to a legal file name with toLegalFileName(String, char).

The starting point of any operation is getCurrent() which gets you the enum for the file system that matches the OS hosting the running JVM.

Since:
2.7
  • Enum Constant Details

  • Field Details

    • IS_OS_LINUX

      private static final boolean IS_OS_LINUX

      Is true if this is Linux.

      The field will return false if OS_NAME is null.

    • IS_OS_MAC

      private static final boolean IS_OS_MAC

      Is true if this is Mac.

      The field will return false if OS_NAME is null.

    • OS_NAME_WINDOWS_PREFIX

      private static final String OS_NAME_WINDOWS_PREFIX
      The prefix String for all Windows OS.
      See Also:
    • IS_OS_WINDOWS

      private static final boolean IS_OS_WINDOWS

      Is true if this is Windows.

      The field will return false if OS_NAME is null.

    • casePreserving

      private final boolean casePreserving
    • caseSensitive

      private final boolean caseSensitive
    • illegalFileNameChars

      private final char[] illegalFileNameChars
    • maxFileNameLength

      private final int maxFileNameLength
    • maxPathLength

      private final int maxPathLength
    • reservedFileNames

      private final String[] reservedFileNames
    • supportsDriveLetter

      private final boolean supportsDriveLetter
  • Constructor Details

    • FileSystem

      private FileSystem(boolean caseSensitive, boolean casePreserving, int maxFileLength, int maxPathLength, char[] illegalFileNameChars, String[] reservedFileNames, boolean supportsDriveLetter)
      Constructs a new instance.
      Parameters:
      caseSensitive - Whether this file system is case sensitive.
      casePreserving - Whether this file system is case preserving.
      maxFileLength - The maximum length for file names. The file name does not include folders.
      maxPathLength - The maximum length of the path to a file. This can include folders.
      illegalFileNameChars - Illegal characters for this file system.
      reservedFileNames - The reserved file names.
      supportsDriveLetter - Whether this file system support driver letters.
  • Method Details

    • values

      public static FileSystem[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static FileSystem valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • getCurrent

      public static FileSystem getCurrent()
      Gets the current file system.
      Returns:
      the current file system
    • getOsMatchesName

      private static boolean getOsMatchesName(String osNamePrefix)
      Decides if the operating system matches.
      Parameters:
      osNamePrefix - the prefix for the os name
      Returns:
      true if matches, or false if not or can't determine
    • getSystemProperty

      private static String getSystemProperty(String property)

      Gets a System property, defaulting to null if the property cannot be read.

      If a SecurityException is caught, the return value is null and a message is written to System.err.

      Parameters:
      property - the system property name
      Returns:
      the system property value or null if a security problem occurs
    • isOsNameMatch

      private static boolean isOsNameMatch(String osName, String osNamePrefix)
      Decides if the operating system matches.

      This method is package private instead of private to support unit test invocation.

      Parameters:
      osName - the actual OS name
      osNamePrefix - the prefix for the expected OS name
      Returns:
      true if matches, or false if not or can't determine
    • getIllegalFileNameChars

      public char[] getIllegalFileNameChars()
      Gets a cloned copy of the illegal characters for this file system.
      Returns:
      the illegal characters for this file system.
    • getMaxFileNameLength

      public int getMaxFileNameLength()
      Gets the maximum length for file names. The file name does not include folders.
      Returns:
      the maximum length for file names.
    • getMaxPathLength

      public int getMaxPathLength()
      Gets the maximum length of the path to a file. This can include folders.
      Returns:
      the maximum length of the path to a file.
    • getReservedFileNames

      public String[] getReservedFileNames()
      Gets a cloned copy of the reserved file names.
      Returns:
      the reserved file names.
    • isCasePreserving

      public boolean isCasePreserving()
      Whether this file system preserves case.
      Returns:
      Whether this file system preserves case.
    • isCaseSensitive

      public boolean isCaseSensitive()
      Whether this file system is case-sensitive.
      Returns:
      Whether this file system is case-sensitive.
    • isIllegalFileNameChar

      private boolean isIllegalFileNameChar(char c)
      Returns true if the given character is illegal in a file name, false otherwise.
      Parameters:
      c - the character to test
      Returns:
      true if the given character is illegal in a file name, false otherwise.
    • isLegalFileName

      public boolean isLegalFileName(CharSequence candidate)
      Checks if a candidate file name (without a path) such as "filename.ext" or "filename" is a potentially legal file name. If the file name length exceeds getMaxFileNameLength(), or if it contains an illegal character then the check fails.
      Parameters:
      candidate - a candidate file name (without a path) like "filename.ext" or "filename"
      Returns:
      true if the candidate name is legal
    • isReservedFileName

      public boolean isReservedFileName(CharSequence candidate)
      Returns whether the given string is a reserved file name.
      Parameters:
      candidate - the string to test
      Returns:
      true if the given string is a reserved file name.
    • supportsDriveLetter

      public boolean supportsDriveLetter()
      Tests whether this file system support driver letters.

      Windows supports driver letters as do other operating systems. Whether these other OS's still support Java like OS/2, is a different matter.

      Returns:
      whether this file system support driver letters.
      Since:
      2.9.0
      See Also:
    • toLegalFileName

      public String toLegalFileName(String candidate, char replacement)
      Converts a candidate file name (without a path) like "filename.ext" or "filename" to a legal file name. Illegal characters in the candidate name are replaced by the replacement character. If the file name length exceeds getMaxFileNameLength(), then the name is truncated to getMaxFileNameLength().
      Parameters:
      candidate - a candidate file name (without a path) like "filename.ext" or "filename"
      replacement - Illegal characters in the candidate name are replaced by this character
      Returns:
      a String without illegal characters