org.h2.store.fs

## Class FileUtils

- java.lang.Object
- - org.h2.store.fs.FileUtils

    public class FileUtils
    extends java.lang.Object

This utility class contains utility functions that use the file system abstraction.

### Constructor Summary

Constructors
Constructor and Description
`FileUtils()`

### Method Summary

Methods
`static boolean` `canWrite(java.lang.String fileName)` Check if the file is writable.
`static void` `createDirectories(java.lang.String dir)` Create the directory and all required parent directories.
`static void` `createDirectory(java.lang.String directoryName)` Create a directory (all required parent directories must already exist).
`static boolean` `createFile(java.lang.String fileName)` Create a new file.
`static java.lang.String` `createTempFile(java.lang.String prefix, java.lang.String suffix, boolean inTempDir)` Create a new temporary file.
`static void` `delete(java.lang.String path)` Delete a file or directory if it exists.
`static void` `deleteRecursive(java.lang.String path, boolean tryOnly)` Delete a directory or file and all subdirectories and files.
`static boolean` `exists(java.lang.String fileName)` Checks if a file exists.
`static java.lang.String` `getName(java.lang.String path)` Get the file or directory name (the last element of the path).
`static java.lang.String` `getParent(java.lang.String fileName)` Get the parent directory of a file or directory.
`static boolean` `isAbsolute(java.lang.String fileName)` Check if the file name includes a path.
`static boolean` `isDirectory(java.lang.String fileName)` Check if it is a file or a directory.
`static long` `lastModified(java.lang.String fileName)` Get the last modified date of a file.
`static void` `move(java.lang.String source, java.lang.String target)` Rename a file if this is allowed.
`static void` `moveAtomicReplace(java.lang.String source, java.lang.String target)` Rename a file if this is allowed, and try to atomically replace an existing file.
`static java.util.List<java.lang.String>` `newDirectoryStream(java.lang.String path)` List the files and directories in the given directory.
`static java.io.InputStream` `newInputStream(java.lang.String fileName)` Create an input stream to read from the file.
`static java.io.OutputStream` `newOutputStream(java.lang.String fileName, boolean append)` Create an output stream to write into the file.
`static java.nio.channels.FileChannel` `open(java.lang.String fileName, java.lang.String mode)` Open a random access file object.
`static void` `readFully(java.nio.channels.FileChannel channel, java.nio.ByteBuffer dst)` Fully read from the file.
`static boolean` `setReadOnly(java.lang.String fileName)` Disable the ability to write.
`static long` `size(java.lang.String fileName)` Get the size of a file in bytes This method is similar to Java 7 `java.nio.file.attribute.Attributes.`
`static java.lang.String` `toRealPath(java.lang.String fileName)` Get the canonical file or directory name.
`static boolean` `tryDelete(java.lang.String path)` Try to delete a file or directory (ignoring errors).
`static java.lang.String` `unwrap(java.lang.String fileName)` Get the unwrapped file name (without wrapper prefixes if wrapping / delegating file systems are used).
`static void` `writeFully(java.nio.channels.FileChannel channel, java.nio.ByteBuffer src)` Fully write to the file.

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

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

### Constructor Detail

#### FileUtils

    public FileUtils()

### Method Detail

#### exists

    public static boolean exists(java.lang.String fileName)

Checks if a file exists. This method is similar to Java 7 `java.nio.file.Path.exists`.

Parameters:
  `fileName` - the file name
Returns:
  true if it exists

#### createDirectory

    public static void createDirectory(java.lang.String directoryName)

Create a directory (all required parent directories must already exist). This method is similar to Java 7 `java.nio.file.Path.createDirectory`.

Parameters:
  `directoryName` - the directory name

#### createFile

    public static boolean createFile(java.lang.String fileName)

Create a new file. This method is similar to Java 7 `java.nio.file.Path.createFile`, but returns false instead of throwing a exception if the file already existed.

Parameters:
  `fileName` - the file name
Returns:
  true if creating was successful

#### delete

    public static void delete(java.lang.String path)

Delete a file or directory if it exists. Directories may only be deleted if they are empty. This method is similar to Java 7 `java.nio.file.Path.deleteIfExists`.

Parameters:
  `path` - the file or directory name

#### toRealPath

    public static java.lang.String toRealPath(java.lang.String fileName)

Get the canonical file or directory name. This method is similar to Java 7 `java.nio.file.Path.toRealPath`.

Parameters:
  `fileName` - the file name
Returns:
  the normalized file name

#### getParent

    public static java.lang.String getParent(java.lang.String fileName)

Get the parent directory of a file or directory. This method returns null if there is no parent. This method is similar to Java 7 `java.nio.file.Path.getParent`.

Parameters:
  `fileName` - the file or directory name
Returns:
  the parent directory name

#### isAbsolute

    public static boolean isAbsolute(java.lang.String fileName)

Check if the file name includes a path. This method is similar to Java 7 `java.nio.file.Path.isAbsolute`.

Parameters:
  `fileName` - the file name
Returns:
  if the file name is absolute

#### move

    public static void move(java.lang.String source,
            java.lang.String target)

Rename a file if this is allowed. This method is similar to Java 7 `java.nio.file.Files.move`.

Parameters:
  `source` - the old fully qualified file name
  `target` - the new fully qualified file name

#### moveAtomicReplace

    public static void moveAtomicReplace(java.lang.String source,
                         java.lang.String target)

Rename a file if this is allowed, and try to atomically replace an existing file. This method is similar to Java 7 `java.nio.file.Files.move`.

Parameters:
  `source` - the old fully qualified file name
  `target` - the new fully qualified file name

#### getName

    public static java.lang.String getName(java.lang.String path)

Get the file or directory name (the last element of the path). This method is similar to Java 7 `java.nio.file.Path.getName`.

Parameters:
  `path` - the directory and file name
Returns:
  just the file name

#### newDirectoryStream

    public static java.util.List<java.lang.String> newDirectoryStream(java.lang.String path)

List the files and directories in the given directory. This method is similar to Java 7 `java.nio.file.Path.newDirectoryStream`.

Parameters:
  `path` - the directory
Returns:
  the list of fully qualified file names

#### lastModified

    public static long lastModified(java.lang.String fileName)

Get the last modified date of a file. This method is similar to Java 7 `java.nio.file.attribute.Attributes. readBasicFileAttributes(file).lastModified().toMillis()`

Parameters:
  `fileName` - the file name
Returns:
  the last modified date

#### size

    public static long size(java.lang.String fileName)

Get the size of a file in bytes This method is similar to Java 7 `java.nio.file.attribute.Attributes. readBasicFileAttributes(file).size()`

Parameters:
  `fileName` - the file name
Returns:
  the size in bytes

#### isDirectory

    public static boolean isDirectory(java.lang.String fileName)

Check if it is a file or a directory. `java.nio.file.attribute.Attributes. readBasicFileAttributes(file).isDirectory()`

Parameters:
  `fileName` - the file or directory name
Returns:
  true if it is a directory

#### open

    public static java.nio.channels.FileChannel open(java.lang.String fileName,
                                     java.lang.String mode)
                                              throws java.io.IOException

Open a random access file object. This method is similar to Java 7 `java.nio.channels.FileChannel.open`.

Parameters:
  `fileName` - the file name
  `mode` - the access mode. Supported are r, rw, rws, rwd
Returns:
  the file object
Throws:
  `java.io.IOException`

#### newInputStream

    public static java.io.InputStream newInputStream(java.lang.String fileName)
                                              throws java.io.IOException

Create an input stream to read from the file. This method is similar to Java 7 `java.nio.file.Path.newInputStream`.

Parameters:
  `fileName` - the file name
Returns:
  the input stream
Throws:
  `java.io.IOException`

#### newOutputStream

    public static java.io.OutputStream newOutputStream(java.lang.String fileName,
                                       boolean append)
                                                throws java.io.IOException

Create an output stream to write into the file. This method is similar to Java 7 `java.nio.file.Path.newOutputStream`.

Parameters:
  `fileName` - the file name
  `append` - if true, the file will grow, if false, the file will be truncated first
Returns:
  the output stream
Throws:
  `java.io.IOException`

#### canWrite

    public static boolean canWrite(java.lang.String fileName)

Check if the file is writable. This method is similar to Java 7 `java.nio.file.Path.checkAccess(AccessMode.WRITE)`

Parameters:
  `fileName` - the file name
Returns:
  if the file is writable

#### setReadOnly

    public static boolean setReadOnly(java.lang.String fileName)

Disable the ability to write. The file can still be deleted afterwards.

Parameters:
  `fileName` - the file name
Returns:
  true if the call was successful

#### unwrap

    public static java.lang.String unwrap(java.lang.String fileName)

Get the unwrapped file name (without wrapper prefixes if wrapping / delegating file systems are used).

Parameters:
  `fileName` - the file name
Returns:
  the unwrapped

#### deleteRecursive

    public static void deleteRecursive(java.lang.String path,
                       boolean tryOnly)

Delete a directory or file and all subdirectories and files.

Parameters:
  `path` - the path
  `tryOnly` - whether errors should be ignored

#### createDirectories

    public static void createDirectories(java.lang.String dir)

Create the directory and all required parent directories.

Parameters:
  `dir` - the directory name

#### tryDelete

    public static boolean tryDelete(java.lang.String path)

Try to delete a file or directory (ignoring errors).

Parameters:
  `path` - the file or directory name
Returns:
  true if it worked

#### createTempFile

    public static java.lang.String createTempFile(java.lang.String prefix,
                                  java.lang.String suffix,
                                  boolean inTempDir)
                                           throws java.io.IOException

Create a new temporary file.

Parameters:
  `prefix` - the prefix of the file name (including directory name if required)
  `suffix` - the suffix
  `inTempDir` - if the file should be stored in the temporary directory
Returns:
  the name of the created file
Throws:
  `java.io.IOException`

#### readFully

    public static void readFully(java.nio.channels.FileChannel channel,
                 java.nio.ByteBuffer dst)
                          throws java.io.IOException

Fully read from the file. This will read all remaining bytes, or throw an EOFException if not successful.

Parameters:
  `channel` - the file channel
  `dst` - the byte buffer
Throws:
  `java.io.IOException`

#### writeFully

    public static void writeFully(java.nio.channels.FileChannel channel,
                  java.nio.ByteBuffer src)
                           throws java.io.IOException

Fully write to the file. This will write all remaining bytes.

Parameters:
  `channel` - the file channel
  `src` - the byte buffer
Throws:
  `java.io.IOException`