Class FilePath

java.lang.Object
org.h2.store.fs.FilePath
Direct Known Subclasses:
FilePathDisk, FilePathMem, FilePathNioMem, FilePathWrapper, FilePathZip

public abstract class FilePath extends Object
A path to a file. It similar to the Java 7 java.nio.file.Path, but simpler, and works with older versions of Java. It also implements the relevant methods found in java.nio.file.FileSystem and FileSystems
  • Field Details

    • defaultProvider

      private static final FilePath defaultProvider
    • providers

      private static final ConcurrentHashMap<String,FilePath> providers
    • tempRandom

      private static String tempRandom
      The prefix for temporary files.
    • tempSequence

      private static long tempSequence
    • name

      public String name
      The complete path (which may be absolute or relative, depending on the file system).
  • Constructor Details

    • FilePath

      public FilePath()
  • Method Details

    • get

      public static FilePath get(String path)
      Get the file path object for the given path. Windows-style '\' is replaced with '/'.
      Parameters:
      path - the path
      Returns:
      the file path object
    • register

      public static void register(FilePath provider)
      Register a file provider.
      Parameters:
      provider - the file provider
    • unregister

      public static void unregister(FilePath provider)
      Unregister a file provider.
      Parameters:
      provider - the file provider
    • size

      public abstract long size()
      Get the size of a file in bytes
      Returns:
      the size in bytes
    • moveTo

      public abstract void moveTo(FilePath newName, boolean atomicReplace)
      Rename a file if this is allowed.
      Parameters:
      newName - the new fully qualified file name
      atomicReplace - whether the move should be atomic, and the target file should be replaced if it exists and replacing is possible
    • createFile

      public abstract boolean createFile()
      Create a new file.
      Returns:
      true if creating was successful
    • exists

      public abstract boolean exists()
      Checks if a file exists.
      Returns:
      true if it exists
    • delete

      public abstract void delete()
      Delete a file or directory if it exists. Directories may only be deleted if they are empty.
    • newDirectoryStream

      public abstract List<FilePath> newDirectoryStream()
      List the files and directories in the given directory.
      Returns:
      the list of fully qualified file names
    • toRealPath

      public abstract FilePath toRealPath()
      Normalize a file name.
      Returns:
      the normalized file name
    • getParent

      public abstract FilePath getParent()
      Get the parent directory of a file or directory.
      Returns:
      the parent directory name
    • isDirectory

      public abstract boolean isDirectory()
      Check if it is a file or a directory.
      Returns:
      true if it is a directory
    • isAbsolute

      public abstract boolean isAbsolute()
      Check if the file name includes a path.
      Returns:
      if the file name is absolute
    • lastModified

      public abstract long lastModified()
      Get the last modified date of a file
      Returns:
      the last modified date
    • canWrite

      public abstract boolean canWrite()
      Check if the file is writable.
      Returns:
      if the file is writable
    • createDirectory

      public abstract void createDirectory()
      Create a directory (all required parent directories already exist).
    • getName

      public String getName()
      Get the file or directory name (the last element of the path).
      Returns:
      the last element of the path
    • newOutputStream

      public OutputStream newOutputStream(boolean append) throws IOException
      Create an output stream to write into the file.
      Parameters:
      append - if true, the file will grow, if false, the file will be truncated first
      Returns:
      the output stream
      Throws:
      IOException - If an I/O error occurs
    • newFileChannelOutputStream

      public static final OutputStream newFileChannelOutputStream(FileChannel channel, boolean append) throws IOException
      Create a new output stream from the channel.
      Parameters:
      channel - the file channel
      append - true for append mode, false for truncate and overwrite
      Returns:
      the output stream
      Throws:
      IOException - on I/O exception
    • open

      public abstract FileChannel open(String mode) throws IOException
      Open a random access file object.
      Parameters:
      mode - the access mode. Supported are r, rw, rws, rwd
      Returns:
      the file object
      Throws:
      IOException - If an I/O error occurs
    • newInputStream

      public InputStream newInputStream() throws IOException
      Create an input stream to read from the file.
      Returns:
      the input stream
      Throws:
      IOException - If an I/O error occurs
    • setReadOnly

      public abstract boolean setReadOnly()
      Disable the ability to write.
      Returns:
      true if the call was successful
    • createTempFile

      public FilePath createTempFile(String suffix, boolean inTempDir) throws IOException
      Create a new temporary file.
      Parameters:
      suffix - the suffix
      inTempDir - if the file should be stored in the temporary directory
      Returns:
      the name of the created file
      Throws:
      IOException - on failure
    • getNextTempFileNamePart

      private static String getNextTempFileNamePart(boolean newRandom)
      Get the next temporary file name part (the part in the middle).
      Parameters:
      newRandom - if the random part of the filename should change
      Returns:
      the file name part
    • toString

      public String toString()
      Get the string representation. The returned string can be used to construct a new object.
      Overrides:
      toString in class Object
      Returns:
      the path as a string
    • getScheme

      public abstract String getScheme()
      Get the scheme (prefix) for this file provider. This is similar to java.nio.file.spi.FileSystemProvider.getScheme.
      Returns:
      the scheme
    • getPath

      public abstract FilePath getPath(String path)
      Convert a file to a path. This is similar to java.nio.file.spi.FileSystemProvider.getPath, but may return an object even if the scheme doesn't match in case of the default file provider.
      Parameters:
      path - the path
      Returns:
      the file path object
    • unwrap

      public FilePath unwrap()
      Get the unwrapped file name (without wrapper prefixes if wrapping / delegating file systems are used).
      Returns:
      the unwrapped path