org.apache.commons.io.file

## Class PathUtils

- java.lang.Object
- - org.apache.commons.io.file.PathUtils

-     public final class PathUtils
      extends Object

  NIO Path utilities.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static CopyOption[]` | `EMPTY_COPY_OPTIONS` Empty `CopyOption` array.
    `static DeleteOption[]` | `EMPTY_DELETE_OPTION_ARRAY` Empty `DeleteOption` array.
    `static FileAttribute<?>[]` | `EMPTY_FILE_ATTRIBUTE_ARRAY` Empty `FileAttribute` array.
    `static FileVisitOption[]` | `EMPTY_FILE_VISIT_OPTION_ARRAY` Empty `FileVisitOption` array.
    `static LinkOption[]` | `EMPTY_LINK_OPTION_ARRAY` Empty `LinkOption` array.
    `static OpenOption[]` | `EMPTY_OPEN_OPTION_ARRAY` Empty `OpenOption` array.
    `static Path[]` | `EMPTY_PATH_ARRAY` Empty `Path` array.
    `(package private) static LinkOption` | `NULL_LINK_OPTION` A LinkOption used to follow link in this class, the inverse of `LinkOption.NOFOLLOW_LINKS`.

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Counters.PathCounters` | `cleanDirectory(Path directory)` Cleans a directory by only deleting files, including in subdirectories, but without deleting the directories.
    `static Counters.PathCounters` | `cleanDirectory(Path directory, DeleteOption... deleteOptions)` Cleans a directory by only deleting files, including in subdirectories, but without deleting the directories.
    `static boolean` | `contentEquals(FileSystem fileSystem1, FileSystem fileSystem2)` Compares the files of two FileSystems to determine if they are equal or not while considering file contents.
    `static long` | `copy(IOSupplier<InputStream> in, Path target, CopyOption... copyOptions)` Copies the InputStream from the supplier with `Files.copy(InputStream, Path, CopyOption...)`.
    `static Counters.PathCounters` | `copyDirectory(Path sourceDirectory, Path targetDirectory, CopyOption... copyOptions)` Copies a directory to another directory.
    `static Path` | `copyFile(URL sourceFile, Path targetFile, CopyOption... copyOptions)` Copies a URL to a directory.
    `static Path` | `copyFileToDirectory(Path sourceFile, Path targetDirectory, CopyOption... copyOptions)` Copies a file to a directory.
    `static Path` | `copyFileToDirectory(URL sourceFile, Path targetDirectory, CopyOption... copyOptions)` Copies a URL to a directory.
    `static Counters.PathCounters` | `countDirectory(Path directory)` Counts aspects of a directory including subdirectories.
    `static Counters.PathCounters` | `countDirectoryAsBigInteger(Path directory)` Counts aspects of a directory including subdirectories.
    `static Path` | `createParentDirectories(Path path, FileAttribute<?>... attrs)` Creates the parent directories for the given `path`.
    `static Path` | `createParentDirectories(Path path, LinkOption linkOption, FileAttribute<?>... attrs)` Creates the parent directories for the given `path`.
    `static Path` | `current()` Gets the current directory.
    `static Counters.PathCounters` | `delete(Path path)` Deletes a file or directory.
    `static Counters.PathCounters` | `delete(Path path, DeleteOption... deleteOptions)` Deletes a file or directory.
    `static Counters.PathCounters` | `delete(Path path, LinkOption[] linkOptions, DeleteOption... deleteOptions)` Deletes a file or directory.
    `static Counters.PathCounters` | `deleteDirectory(Path directory)` Deletes a directory including subdirectories.
    `static Counters.PathCounters` | `deleteDirectory(Path directory, DeleteOption... deleteOptions)` Deletes a directory including subdirectories.
    `static Counters.PathCounters` | `deleteDirectory(Path directory, LinkOption[] linkOptions, DeleteOption... deleteOptions)` Deletes a directory including subdirectories.
    `static Counters.PathCounters` | `deleteFile(Path file)` Deletes the given file.
    `static Counters.PathCounters` | `deleteFile(Path file, DeleteOption... deleteOptions)` Deletes the given file.
    `static Counters.PathCounters` | `deleteFile(Path file, LinkOption[] linkOptions, DeleteOption... deleteOptions)` Deletes the given file.
    `static void` | `deleteOnExit(Path path)` Delegates to `File.deleteOnExit()`.
    `static boolean` | `directoryAndFileContentEquals(Path path1, Path path2)` Compares the files of two Paths to determine if they are equal or not while considering file contents.
    `static boolean` | `directoryAndFileContentEquals(Path path1, Path path2, LinkOption[] linkOptions, OpenOption[] openOptions, FileVisitOption[] fileVisitOption)` Compares the file sets of two Paths to determine if they are equal or not while considering file contents.
    `static boolean` | `directoryContentEquals(Path path1, Path path2)` Compares the file sets of two Paths to determine if they are equal or not without considering file contents.
    `static boolean` | `directoryContentEquals(Path path1, Path path2, int maxDepth, LinkOption[] linkOptions, FileVisitOption[] fileVisitOptions)` Compares the file sets of two Paths to determine if they are equal or not without considering file contents.
    `static boolean` | `fileContentEquals(Path path1, Path path2)` Compares the file contents of two Paths to determine if they are equal or not.
    `static boolean` | `fileContentEquals(Path path1, Path path2, LinkOption[] linkOptions, OpenOption[] openOptions)` Compares the file contents of two Paths to determine if they are equal or not.
    `static Path[]` | `filter(PathFilter filter, Path... paths)` Applies an `IOFileFilter` to the provided `File` objects.
    `static List<AclEntry>` | `getAclEntryList(Path sourcePath)` Reads the access control list from a file attribute view.
    `static AclFileAttributeView` | `getAclFileAttributeView(Path path, LinkOption... options)` Shorthand for `Files.getFileAttributeView(path, AclFileAttributeView.class)`.
    `static String` | `getBaseName(Path path)` Gets the base name (the part up to and not including the last ".") of the last path segment of a file name.
    `static DosFileAttributeView` | `getDosFileAttributeView(Path path, LinkOption... options)` Shorthand for `Files.getFileAttributeView(path, DosFileAttributeView.class, options)`.
    `static String` | `getExtension(Path path)` Gets the extension of a Path.
    `static <R> R` | `getFileName(Path path, java.util.function.Function<Path,R> function)` Gets the Path's file name and apply the given function if the file name is non-null.
    `static String` | `getFileNameString(Path path)` Gets the Path's file name as a string.
    `static FileTime` | `getLastModifiedFileTime(File file)` Gets the file's last modified time or null if the file does not exist.
    `static FileTime` | `getLastModifiedFileTime(Path path, FileTime defaultIfAbsent, LinkOption... options)` Gets the file's last modified time or null if the file does not exist.
    `static FileTime` | `getLastModifiedFileTime(Path path, LinkOption... options)` Gets the file's last modified time or null if the file does not exist.
    `static FileTime` | `getLastModifiedFileTime(URI uri)` Gets the file's last modified time or null if the file does not exist.
    `static FileTime` | `getLastModifiedFileTime(URL url)` Gets the file's last modified time or null if the file does not exist.
    `static PosixFileAttributeView` | `getPosixFileAttributeView(Path path, LinkOption... options)` Shorthand for `Files.getFileAttributeView(path, PosixFileAttributeView.class)`.
    `static Path` | `getTempDirectory()` Gets a `Path` representing the system temporary directory.
    `static boolean` | `isDirectory(Path path, LinkOption... options)` Tests whether the given `Path` is a directory or not.
    `static boolean` | `isEmpty(Path path)` Tests whether the given file or directory is empty.
    `static boolean` | `isEmptyDirectory(Path directory)` Tests whether the directory is empty.
    `static boolean` | `isEmptyFile(Path file)` Tests whether the given file is empty.
    `static boolean` | `isNewer(Path file, java.time.chrono.ChronoZonedDateTime<?> czdt, LinkOption... options)` Tests if the given `Path` is newer than the given time reference.
    `static boolean` | `isNewer(Path file, FileTime fileTime, LinkOption... options)` Tests if the given `Path` is newer than the given time reference.
    `static boolean` | `isNewer(Path file, java.time.Instant instant, LinkOption... options)` Tests if the given `Path` is newer than the given time reference.
    `static boolean` | `isNewer(Path file, long timeMillis, LinkOption... options)` Tests if the given `Path` is newer than the given time reference.
    `static boolean` | `isNewer(Path file, Path reference)` Tests if the given `Path` is newer than the reference `Path`.
    `static boolean` | `isOlder(Path file, FileTime fileTime, LinkOption... options)` Tests if the given `Path` is older than the given time reference.
    `static boolean` | `isOlder(Path file, java.time.Instant instant, LinkOption... options)` Tests if the given `Path` is older than the given time reference.
    `static boolean` | `isOlder(Path file, long timeMillis, LinkOption... options)` Tests if the given `Path` is older than the given time reference.
    `static boolean` | `isOlder(Path file, Path reference)` Tests if the given `Path` is older than the reference `Path`.
    `static boolean` | `isPosix(Path test, LinkOption... options)` Tests whether the given path is on a POSIX file system.
    `static boolean` | `isRegularFile(Path path, LinkOption... options)` Tests whether the given `Path` is a regular file or not.
    `(package private) static boolean` | `isSameFileSystem(Path path1, Path path2)`
    `static DirectoryStream<Path>` | `newDirectoryStream(Path dir, PathFilter pathFilter)` Creates a new DirectoryStream for Paths rooted at the given directory.
    `static OutputStream` | `newOutputStream(Path path, boolean append)` Creates a new OutputStream by opening or creating a file, returning an output stream that may be used to write bytes to the file.
    `(package private) static OutputStream` | `newOutputStream(Path path, LinkOption[] linkOptions, OpenOption... openOptions)`
    `static LinkOption[]` | `noFollowLinkOptionArray()` Copy of the `LinkOption` array for `LinkOption.NOFOLLOW_LINKS`.
    `static <A extends BasicFileAttributes> A` | `readAttributes(Path path, Class<A> type, LinkOption... options)` Reads the BasicFileAttributes from the given path.
    `static BasicFileAttributes` | `readBasicFileAttributes(Path path)` Reads the BasicFileAttributes from the given path.
    `static BasicFileAttributes` | `readBasicFileAttributes(Path path, LinkOption... options)` Reads the BasicFileAttributes from the given path.
    `static DosFileAttributes` | `readDosFileAttributes(Path path, LinkOption... options)` Reads the DosFileAttributes from the given path.
    `static BasicFileAttributes` | `readOsFileAttributes(Path path, LinkOption... options)` Reads the PosixFileAttributes or DosFileAttributes from the given path.
    `static PosixFileAttributes` | `readPosixFileAttributes(Path path, LinkOption... options)` Reads the PosixFileAttributes from the given path.
    `static String` | `readString(Path path, Charset charset)` Reads the file contents at the given path as a String using the Charset.
    `(package private) static List<Path>` | `relativize(Collection<Path> collection, Path parent, boolean sort, Comparator<? super Path> comparator)` Relativizes all files in the given `collection` against a `parent`.
    `(package private) static Path` | `resolve(Path targetDirectory, Path otherPath)`
    `static void` | `setLastModifiedTime(Path sourceFile, Path targetFile)` Sets the given `targetFile`'s last modified time to the value from `sourceFile`.
    `static Path` | `setReadOnly(Path path, boolean readOnly, LinkOption... linkOptions)` Sets the given Path to the `readOnly` value.
    `static long` | `sizeOf(Path path)` Returns the size of the given file or directory.
    `static BigInteger` | `sizeOfAsBigInteger(Path path)` Returns the size of the given file or directory.
    `static long` | `sizeOfDirectory(Path directory)` Counts the size of a directory recursively (sum of the size of all files).
    `static BigInteger` | `sizeOfDirectoryAsBigInteger(Path directory)` Counts the size of a directory recursively (sum of the size of all files).
    `(package private) static Set<FileVisitOption>` | `toFileVisitOptionSet(FileVisitOption... fileVisitOptions)` Converts an array of `FileVisitOption` to a `Set`.
    `static Path` | `touch(Path file)` Implements behavior similar to the Unix "touch" utility.
    `static <T extends FileVisitor<? super Path>> T` | `visitFileTree(T visitor, Path directory)` Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor.
    `static <T extends FileVisitor<? super Path>> T` | `visitFileTree(T visitor, Path start, Set<FileVisitOption> options, int maxDepth)` Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor.
    `static <T extends FileVisitor<? super Path>> T` | `visitFileTree(T visitor, String first, String... more)` Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor.
    `static <T extends FileVisitor<? super Path>> T` | `visitFileTree(T visitor, URI uri)` Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor.
    `static boolean` | `waitFor(Path file, java.time.Duration timeout, LinkOption... options)` Waits for the file system to detect a file's presence, with a timeout.
    `static java.util.stream.Stream<Path>` | `walk(Path start, PathFilter pathFilter, int maxDepth, boolean readAttributes, FileVisitOption... options)` Returns a stream of filtered paths.
    `static Path` | `writeString(Path path, CharSequence charSequence, Charset charset, OpenOption... openOptions)` Writes the given character sequence to a file at the given path.

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

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

- - ### Field Detail

    - #### EMPTY_COPY_OPTIONS

          public static final CopyOption[] EMPTY_COPY_OPTIONS

      Empty `CopyOption` array.

    - #### EMPTY_DELETE_OPTION_ARRAY

          public static final DeleteOption[] EMPTY_DELETE_OPTION_ARRAY

      Empty `DeleteOption` array.

    - #### EMPTY_FILE_ATTRIBUTE_ARRAY

          public static final FileAttribute<?>[] EMPTY_FILE_ATTRIBUTE_ARRAY

      Empty `FileAttribute` array.

    - #### EMPTY_FILE_VISIT_OPTION_ARRAY

          public static final FileVisitOption[] EMPTY_FILE_VISIT_OPTION_ARRAY

      Empty `FileVisitOption` array.

    - #### EMPTY_LINK_OPTION_ARRAY

          public static final LinkOption[] EMPTY_LINK_OPTION_ARRAY

      Empty `LinkOption` array.

    - #### EMPTY_OPEN_OPTION_ARRAY

          public static final OpenOption[] EMPTY_OPEN_OPTION_ARRAY

      Empty `OpenOption` array.

    - #### EMPTY_PATH_ARRAY

          public static final Path[] EMPTY_PATH_ARRAY

      Empty `Path` array.

    - #### NULL_LINK_OPTION

          static final LinkOption NULL_LINK_OPTION

      A LinkOption used to follow link in this class, the inverse of `LinkOption.NOFOLLOW_LINKS`.

  - ### Method Detail

    - #### cleanDirectory

          public static Counters.PathCounters cleanDirectory(Path directory)
                                                      throws IOException

      Cleans a directory by only deleting files, including in subdirectories, but without deleting the directories.
      Parameters:
        `directory` - directory to clean.
      Returns:
        The visitation path counters.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### cleanDirectory

          public static Counters.PathCounters cleanDirectory(Path directory,
                                                             DeleteOption... deleteOptions)
                                                      throws IOException

      Cleans a directory by only deleting files, including in subdirectories, but without deleting the directories.
      Parameters:
        `directory` - directory to clean.
        `deleteOptions` - How to handle deletion.
      Returns:
        The visitation path counters.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### contentEquals

          public static boolean contentEquals(FileSystem fileSystem1,
                                              FileSystem fileSystem2)
                                       throws IOException

      Compares the files of two FileSystems to determine if they are equal or not while considering file contents. The comparison includes all files in all subdirectories.

      For example, to compare two ZIP files:

           final Path zipPath1 = Paths.get("file1.zip");
           final Path zipPath2 = Paths.get("file2.zip");
           try (FileSystem fileSystem1 = FileSystems.newFileSystem(zipPath1, null); FileSystem fileSystem2 = FileSystems.newFileSystem(zipPath2, null)) {
               assertTrue(PathUtils.directoryAndFileContentEquals(dir1, dir2));
           }

      Parameters:
        `fileSystem1` - The first FileSystem.
        `fileSystem2` - The second FileSystem.
      Returns:
        Whether the two FileSystem contain the same files while considering file contents.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### copy

          public static long copy(IOSupplier<InputStream> in,
                                  Path target,
                                  CopyOption... copyOptions)
                           throws IOException

      Copies the InputStream from the supplier with `Files.copy(InputStream, Path, CopyOption...)`.
      Parameters:
        `in` - Supplies the InputStream.
        `target` - See `Files.copy(InputStream, Path, CopyOption...)`.
        `copyOptions` - See `Files.copy(InputStream, Path, CopyOption...)`.
      Returns:
        See `Files.copy(InputStream, Path, CopyOption...)`
      Throws:
        `IOException` - See `Files.copy(InputStream, Path, CopyOption...)`

    - #### copyDirectory

          public static Counters.PathCounters copyDirectory(Path sourceDirectory,
                                                            Path targetDirectory,
                                                            CopyOption... copyOptions)
                                                     throws IOException

      Copies a directory to another directory.
      Parameters:
        `sourceDirectory` - The source directory.
        `targetDirectory` - The target directory.
        `copyOptions` - Specifies how the copying should be done.
      Returns:
        The visitation path counters.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### copyFile

          public static Path copyFile(URL sourceFile,
                                      Path targetFile,
                                      CopyOption... copyOptions)
                               throws IOException

      Copies a URL to a directory.
      Parameters:
        `sourceFile` - The source URL.
        `targetFile` - The target file.
        `copyOptions` - Specifies how the copying should be done.
      Returns:
        The target file
      Throws:
        `IOException` - if an I/O error occurs.
      See Also:
        `Files.copy(InputStream, Path, CopyOption...)`

    - #### copyFileToDirectory

          public static Path copyFileToDirectory(Path sourceFile,
                                                 Path targetDirectory,
                                                 CopyOption... copyOptions)
                                          throws IOException

      Copies a file to a directory.
      Parameters:
        `sourceFile` - The source file.
        `targetDirectory` - The target directory.
        `copyOptions` - Specifies how the copying should be done.
      Returns:
        The target file
      Throws:
        `IOException` - if an I/O error occurs.
      See Also:
        `Files.copy(Path, Path, CopyOption...)`

    - #### copyFileToDirectory

          public static Path copyFileToDirectory(URL sourceFile,
                                                 Path targetDirectory,
                                                 CopyOption... copyOptions)
                                          throws IOException

      Copies a URL to a directory.
      Parameters:
        `sourceFile` - The source URL.
        `targetDirectory` - The target directory.
        `copyOptions` - Specifies how the copying should be done.
      Returns:
        The target file
      Throws:
        `IOException` - if an I/O error occurs.
      See Also:
        `Files.copy(InputStream, Path, CopyOption...)`

    - #### countDirectory

          public static Counters.PathCounters countDirectory(Path directory)
                                                      throws IOException

      Counts aspects of a directory including subdirectories.
      Parameters:
        `directory` - directory to delete.
      Returns:
        The visitor used to count the given directory.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### countDirectoryAsBigInteger

          public static Counters.PathCounters countDirectoryAsBigInteger(Path directory)
                                                                  throws IOException

      Counts aspects of a directory including subdirectories.
      Parameters:
        `directory` - directory to count.
      Returns:
        The visitor used to count the given directory.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### createParentDirectories

          public static Path createParentDirectories(Path path,
                                                     FileAttribute<?>... attrs)
                                              throws IOException

      Creates the parent directories for the given `path`.

      If the parent directory already exists, then return it.

      Parameters:
        `path` - The path to a file (or directory).
        `attrs` - An optional list of file attributes to set atomically when creating the directories.
      Returns:
        The Path for the `path`'s parent directory or null if the given path has no parent.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### createParentDirectories

          public static Path createParentDirectories(Path path,
                                                     LinkOption linkOption,
                                                     FileAttribute<?>... attrs)
                                              throws IOException

      Creates the parent directories for the given `path`.

      If the parent directory already exists, then return it.

      Parameters:
        `path` - The path to a file (or directory).
        `linkOption` - A `LinkOption` or null.
        `attrs` - An optional list of file attributes to set atomically when creating the directories.
      Returns:
        The Path for the `path`'s parent directory or null if the given path has no parent.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### current

          public static Path current()

      Gets the current directory.
      Returns:
        the current directory.

    - #### delete

          public static Counters.PathCounters delete(Path path)
                                              throws IOException

      Deletes a file or directory. If the path is a directory, delete it and all subdirectories.

      The difference between `File.delete()` and this method are:

      - A directory to delete does not have to be empty.
      - You get exceptions when a file or directory cannot be deleted; `File.delete()` returns a boolean.
      Parameters:
        `path` - file or directory to delete, must not be `null`
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `NullPointerException` - if the directory is `null`
        `IOException` - if an I/O error is thrown by a visitor method or if an I/O error occurs.

    - #### delete

          public static Counters.PathCounters delete(Path path,
                                                     DeleteOption... deleteOptions)
                                              throws IOException

      Deletes a file or directory. If the path is a directory, delete it and all subdirectories.

      The difference between File.delete() and this method are:

      - A directory to delete does not have to be empty.
      - You get exceptions when a file or directory cannot be deleted; `File.delete()` returns a boolean.
      Parameters:
        `path` - file or directory to delete, must not be `null`
        `deleteOptions` - How to handle deletion.
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `NullPointerException` - if the directory is `null`
        `IOException` - if an I/O error is thrown by a visitor method or if an I/O error occurs.

    - #### delete

          public static Counters.PathCounters delete(Path path,
                                                     LinkOption[] linkOptions,
                                                     DeleteOption... deleteOptions)
                                              throws IOException

      Deletes a file or directory. If the path is a directory, delete it and all subdirectories.

      The difference between File.delete() and this method are:

      - A directory to delete does not have to be empty.
      - You get exceptions when a file or directory cannot be deleted; `File.delete()` returns a boolean.
      Parameters:
        `path` - file or directory to delete, must not be `null`
        `linkOptions` - How to handle symbolic links.
        `deleteOptions` - How to handle deletion.
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `NullPointerException` - if the directory is `null`
        `IOException` - if an I/O error is thrown by a visitor method or if an I/O error occurs.

    - #### deleteDirectory

          public static Counters.PathCounters deleteDirectory(Path directory)
                                                       throws IOException

      Deletes a directory including subdirectories.
      Parameters:
        `directory` - directory to delete.
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### deleteDirectory

          public static Counters.PathCounters deleteDirectory(Path directory,
                                                              DeleteOption... deleteOptions)
                                                       throws IOException

      Deletes a directory including subdirectories.
      Parameters:
        `directory` - directory to delete.
        `deleteOptions` - How to handle deletion.
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### deleteDirectory

          public static Counters.PathCounters deleteDirectory(Path directory,
                                                              LinkOption[] linkOptions,
                                                              DeleteOption... deleteOptions)
                                                       throws IOException

      Deletes a directory including subdirectories.
      Parameters:
        `directory` - directory to delete.
        `linkOptions` - How to handle symbolic links.
        `deleteOptions` - How to handle deletion.
      Returns:
        The visitor used to delete the given directory.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### deleteFile

          public static Counters.PathCounters deleteFile(Path file)
                                                  throws IOException

      Deletes the given file.
      Parameters:
        `file` - The file to delete.
      Returns:
        A visitor with path counts set to 1 file, 0 directories, and the size of the deleted file.
      Throws:
        `IOException` - if an I/O error occurs.
        `NoSuchFileException` - if the file is a directory

    - #### deleteFile

          public static Counters.PathCounters deleteFile(Path file,
                                                         DeleteOption... deleteOptions)
                                                  throws IOException

      Deletes the given file.
      Parameters:
        `file` - The file to delete.
        `deleteOptions` - How to handle deletion.
      Returns:
        A visitor with path counts set to 1 file, 0 directories, and the size of the deleted file.
      Throws:
        `IOException` - if an I/O error occurs.
        `NoSuchFileException` - if the file is a directory.

    - #### deleteFile

          public static Counters.PathCounters deleteFile(Path file,
                                                         LinkOption[] linkOptions,
                                                         DeleteOption... deleteOptions)
                                                  throws NoSuchFileException,
                                                         IOException

      Deletes the given file.
      Parameters:
        `file` - The file to delete.
        `linkOptions` - How to handle symbolic links.
        `deleteOptions` - How to handle deletion.
      Returns:
        A visitor with path counts set to 1 file, 0 directories, and the size of the deleted file.
      Throws:
        `IOException` - if an I/O error occurs.
        `NoSuchFileException` - if the file is a directory.

    - #### deleteOnExit

          public static void deleteOnExit(Path path)

      Delegates to `File.deleteOnExit()`.
      Parameters:
        `path` - the path to delete.

    - #### directoryAndFileContentEquals

          public static boolean directoryAndFileContentEquals(Path path1,
                                                              Path path2)
                                                       throws IOException

      Compares the files of two Paths to determine if they are equal or not while considering file contents. The comparison includes all files in all subdirectories.
      Parameters:
        `path1` - The first directory.
        `path2` - The second directory.
      Returns:
        Whether the two directories contain the same files while considering file contents.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### directoryAndFileContentEquals

          public static boolean directoryAndFileContentEquals(Path path1,
                                                              Path path2,
                                                              LinkOption[] linkOptions,
                                                              OpenOption[] openOptions,
                                                              FileVisitOption[] fileVisitOption)
                                                       throws IOException

      Compares the file sets of two Paths to determine if they are equal or not while considering file contents. The comparison includes all files in all subdirectories.
      Parameters:
        `path1` - The first directory.
        `path2` - The second directory.
        `linkOptions` - options to follow links.
        `openOptions` - options to open files.
        `fileVisitOption` - options to configure traversal.
      Returns:
        Whether the two directories contain the same files while considering file contents.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### directoryContentEquals

          public static boolean directoryContentEquals(Path path1,
                                                       Path path2)
                                                throws IOException

      Compares the file sets of two Paths to determine if they are equal or not without considering file contents. The comparison includes all files in all subdirectories.
      Parameters:
        `path1` - The first directory.
        `path2` - The second directory.
      Returns:
        Whether the two directories contain the same files without considering file contents.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### directoryContentEquals

          public static boolean directoryContentEquals(Path path1,
                                                       Path path2,
                                                       int maxDepth,
                                                       LinkOption[] linkOptions,
                                                       FileVisitOption[] fileVisitOptions)
                                                throws IOException

      Compares the file sets of two Paths to determine if they are equal or not without considering file contents. The comparison includes all files in all subdirectories.
      Parameters:
        `path1` - The first directory.
        `path2` - The second directory.
        `maxDepth` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
        `linkOptions` - options to follow links.
        `fileVisitOptions` - options to configure the traversal
      Returns:
        Whether the two directories contain the same files without considering file contents.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### fileContentEquals

          public static boolean fileContentEquals(Path path1,
                                                  Path path2)
                                           throws IOException

      Compares the file contents of two Paths to determine if they are equal or not.

      File content is accessed through `Files.newInputStream(Path,OpenOption...)`.

      Parameters:
        `path1` - the first file path.
        `path2` - the second file path.
      Returns:
        true if the content of the streams are equal or they both don't exist, false otherwise.
      Throws:
        `NullPointerException` - if either input is null.
        `IOException` - if an I/O error occurs.
      See Also:
        `FileUtils.contentEquals(java.io.File, java.io.File)`

    - #### fileContentEquals

          public static boolean fileContentEquals(Path path1,
                                                  Path path2,
                                                  LinkOption[] linkOptions,
                                                  OpenOption[] openOptions)
                                           throws IOException

      Compares the file contents of two Paths to determine if they are equal or not.

      File content is accessed through `RandomAccessFileMode.create(Path)`.

      Parameters:
        `path1` - the first file path.
        `path2` - the second file path.
        `linkOptions` - options specifying how files are followed.
        `openOptions` - ignored.
      Returns:
        true if the content of the streams are equal or they both don't exist, false otherwise.
      Throws:
        `NullPointerException` - if openOptions is null.
        `IOException` - if an I/O error occurs.
      See Also:
        `FileUtils.contentEquals(java.io.File, java.io.File)`

    - #### filter

          public static Path[] filter(PathFilter filter,
                                      Path... paths)

      Applies an `IOFileFilter` to the provided `File` objects. The resulting array is a subset of the original file list that matches the provided filter.

      The `Set` returned by this method is not guaranteed to be thread safe.

           Set<File> allFiles = ...
           Set<File> javaFiles = FileFilterUtils.filterSet(allFiles,
               FileFilterUtils.suffixFileFilter(".java"));

      Parameters:
        `filter` - the filter to apply to the set of files.
        `paths` - the array of files to apply the filter to.
      Returns:
        a subset of `files` that is accepted by the file filter.
      Throws:
        `NullPointerException` - if the filter is `null`
        `IllegalArgumentException` - if `files` contains a `null` value.

    - #### getAclEntryList

          public static List<AclEntry> getAclEntryList(Path sourcePath)
                                                throws IOException

      Reads the access control list from a file attribute view.
      Parameters:
        `sourcePath` - the path to the file.
      Returns:
        a file attribute view of the given type, or null if the attribute view type is not available.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### getAclFileAttributeView

          public static AclFileAttributeView getAclFileAttributeView(Path path,
                                                                     LinkOption... options)

      Shorthand for `Files.getFileAttributeView(path, AclFileAttributeView.class)`.
      Parameters:
        `path` - the path to the file.
        `options` - how to handle symbolic links.
      Returns:
        a AclFileAttributeView, or `null` if the attribute view type is not available.

    - #### getBaseName

          public static String getBaseName(Path path)

      Gets the base name (the part up to and not including the last ".") of the last path segment of a file name.

      Will return the file name itself if it doesn't contain any periods. All leading directories of the `file name` parameter are skipped.

      Parameters:
        `path` - the path of the file to obtain the base name of.
      Returns:
        the base name of file name

    - #### getDosFileAttributeView

          public static DosFileAttributeView getDosFileAttributeView(Path path,
                                                                     LinkOption... options)

      Shorthand for `Files.getFileAttributeView(path, DosFileAttributeView.class, options)`.
      Parameters:
        `path` - the path to the file.
        `options` - how to handle symbolic links.
      Returns:
        a DosFileAttributeView, or `null` if the attribute view type is not available.

    - #### getExtension

          public static String getExtension(Path path)

      Gets the extension of a Path.

      This method returns the textual part of the Path after the last period.

           foo.txt      --> "txt"
           a/b/c.jpg    --> "jpg"
           a/b.txt/c    --> ""
           a/b/c        --> ""

      The output will be the same irrespective of the machine that the code is running on.

      Parameters:
        `path` - the path to query.
      Returns:
        the extension of the file or an empty string if none exists or `null` if the fileName is `null`.

    - #### getFileName

          public static <R> R getFileName(Path path,
                                          java.util.function.Function<Path,R> function)

      Gets the Path's file name and apply the given function if the file name is non-null.
      Type Parameters:
        `R` - The function's result type.
      Parameters:
        `path` - the path to query.
        `function` - function to apply to the file name.
      Returns:
        the Path's file name as a string or null.
      See Also:
        `Path.getFileName()`

    - #### getFileNameString

          public static String getFileNameString(Path path)

      Gets the Path's file name as a string.
      Parameters:
        `path` - the path to query.
      Returns:
        the Path's file name as a string or null.
      See Also:
        `Path.getFileName()`

    - #### getLastModifiedFileTime

          public static FileTime getLastModifiedFileTime(File file)
                                                  throws IOException

      Gets the file's last modified time or null if the file does not exist.

      The method provides a workaround for bug JDK-8177809 where `File.lastModified()` looses milliseconds and always ends in 000. This bug is in OpenJDK 8 and 9, and fixed in 11.

      Parameters:
        `file` - the file to query.
      Returns:
        the file's last modified time.
      Throws:
        `IOException` - Thrown if an I/O error occurs.

    - #### getLastModifiedFileTime

          public static FileTime getLastModifiedFileTime(Path path,
                                                         FileTime defaultIfAbsent,
                                                         LinkOption... options)
                                                  throws IOException

      Gets the file's last modified time or null if the file does not exist.
      Parameters:
        `path` - the file to query.
        `defaultIfAbsent` - Returns this file time of the file does not exist, may be null.
        `options` - options indicating how symbolic links are handled.
      Returns:
        the file's last modified time.
      Throws:
        `IOException` - Thrown if an I/O error occurs.

    - #### getLastModifiedFileTime

          public static FileTime getLastModifiedFileTime(Path path,
                                                         LinkOption... options)
                                                  throws IOException

      Gets the file's last modified time or null if the file does not exist.
      Parameters:
        `path` - the file to query.
        `options` - options indicating how symbolic links are handled.
      Returns:
        the file's last modified time.
      Throws:
        `IOException` - Thrown if an I/O error occurs.

    - #### getLastModifiedFileTime

          public static FileTime getLastModifiedFileTime(URI uri)
                                                  throws IOException

      Gets the file's last modified time or null if the file does not exist.
      Parameters:
        `uri` - the file to query.
      Returns:
        the file's last modified time.
      Throws:
        `IOException` - Thrown if an I/O error occurs.

    - #### getLastModifiedFileTime

          public static FileTime getLastModifiedFileTime(URL url)
                                                  throws IOException,
                                                         URISyntaxException

      Gets the file's last modified time or null if the file does not exist.
      Parameters:
        `url` - the file to query.
      Returns:
        the file's last modified time.
      Throws:
        `IOException` - Thrown if an I/O error occurs.
        `URISyntaxException` - if the URL is not formatted strictly according to RFC2396 and cannot be converted to a URI.

    - #### getPosixFileAttributeView

          public static PosixFileAttributeView getPosixFileAttributeView(Path path,
                                                                         LinkOption... options)

      Shorthand for `Files.getFileAttributeView(path, PosixFileAttributeView.class)`.
      Parameters:
        `path` - the path to the file.
        `options` - how to handle symbolic links.
      Returns:
        a PosixFileAttributeView, or `null` if the attribute view type is not available.

    - #### getTempDirectory

          public static Path getTempDirectory()

      Gets a `Path` representing the system temporary directory.
      Returns:
        the system temporary directory.

    - #### isDirectory

          public static boolean isDirectory(Path path,
                                            LinkOption... options)

      Tests whether the given `Path` is a directory or not. Implemented as a null-safe delegate to `Files.isDirectory(Path path, LinkOption... options)`.
      Parameters:
        `path` - the path to the file.
        `options` - options indicating how to handle symbolic links
      Returns:
        `true` if the file is a directory; `false` if the path is null, the file does not exist, is not a directory, or it cannot be determined if the file is a directory or not.
      Throws:
        `SecurityException` - In the case of the default provider, and a security manager is installed, the `checkRead` method is invoked to check read access to the directory.

    - #### isEmpty

          public static boolean isEmpty(Path path)
                                 throws IOException

      Tests whether the given file or directory is empty.
      Parameters:
        `path` - the file or directory to query.
      Returns:
        whether the file or directory is empty.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### isEmptyDirectory

          public static boolean isEmptyDirectory(Path directory)
                                          throws IOException

      Tests whether the directory is empty.
      Parameters:
        `directory` - the directory to query.
      Returns:
        whether the directory is empty.
      Throws:
        `NotDirectoryException` - if the file could not otherwise be opened because it is not a directory (optional specific exception).
        `IOException` - if an I/O error occurs.
        `SecurityException` - In the case of the default provider, and a security manager is installed, the `checkRead` method is invoked to check read access to the directory.

    - #### isEmptyFile

          public static boolean isEmptyFile(Path file)
                                     throws IOException

      Tests whether the given file is empty.
      Parameters:
        `file` - the file to query.
      Returns:
        whether the file is empty.
      Throws:
        `IOException` - if an I/O error occurs.
        `SecurityException` - In the case of the default provider, and a security manager is installed, its `checkRead` method denies read access to the file.

    - #### isNewer

          public static boolean isNewer(Path file,
                                        java.time.chrono.ChronoZonedDateTime<?> czdt,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is newer than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `czdt` - the time reference.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified after the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isNewer

          public static boolean isNewer(Path file,
                                        FileTime fileTime,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is newer than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `fileTime` - the time reference.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified after the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isNewer

          public static boolean isNewer(Path file,
                                        java.time.Instant instant,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is newer than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `instant` - the time reference.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified after the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isNewer

          public static boolean isNewer(Path file,
                                        long timeMillis,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is newer than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `timeMillis` - the time reference measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970)
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified after the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isNewer

          public static boolean isNewer(Path file,
                                        Path reference)
                                 throws IOException

      Tests if the given `Path` is newer than the reference `Path`.
      Parameters:
        `file` - the `File` to test.
        `reference` - the `File` of which the modification date is used.
      Returns:
        true if the `File` exists and has been modified more recently than the reference `File`.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### isOlder

          public static boolean isOlder(Path file,
                                        FileTime fileTime,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is older than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `fileTime` - the time reference.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified before the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isOlder

          public static boolean isOlder(Path file,
                                        java.time.Instant instant,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is older than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `instant` - the time reference.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified before the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isOlder

          public static boolean isOlder(Path file,
                                        long timeMillis,
                                        LinkOption... options)
                                 throws IOException

      Tests if the given `Path` is older than the given time reference.
      Parameters:
        `file` - the `Path` to test.
        `timeMillis` - the time reference measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970)
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if the `Path` exists and has been modified before the given time reference.
      Throws:
        `IOException` - if an I/O error occurs.
        `NullPointerException` - if the file is `null`.

    - #### isOlder

          public static boolean isOlder(Path file,
                                        Path reference)
                                 throws IOException

      Tests if the given `Path` is older than the reference `Path`.
      Parameters:
        `file` - the `File` to test.
        `reference` - the `File` of which the modification date is used.
      Returns:
        true if the `File` exists and has been modified before than the reference `File`.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### isPosix

          public static boolean isPosix(Path test,
                                        LinkOption... options)

      Tests whether the given path is on a POSIX file system.
      Parameters:
        `test` - The Path to test.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if test is on a POSIX file system.

    - #### isRegularFile

          public static boolean isRegularFile(Path path,
                                              LinkOption... options)

      Tests whether the given `Path` is a regular file or not. Implemented as a null-safe delegate to `Files.isRegularFile(Path path, LinkOption... options)`.
      Parameters:
        `path` - the path to the file.
        `options` - options indicating how to handle symbolic links.
      Returns:
        `true` if the file is a regular file; `false` if the path is null, the file does not exist, is not a directory, or it cannot be determined if the file is a regular file or not.
      Throws:
        `SecurityException` - In the case of the default provider, and a security manager is installed, the `checkRead` method is invoked to check read access to the directory.

    - #### isSameFileSystem

          static boolean isSameFileSystem(Path path1,
                                          Path path2)

    - #### newDirectoryStream

          public static DirectoryStream<Path> newDirectoryStream(Path dir,
                                                                 PathFilter pathFilter)
                                                          throws IOException

      Creates a new DirectoryStream for Paths rooted at the given directory.

      If you don't use the try-with-resources construct, then you must call the stream's `BaseStream.close()` method after iteration is complete to free any resources held for the open directory.

      Parameters:
        `dir` - the path to the directory to stream.
        `pathFilter` - the directory stream filter.
      Returns:
        a new instance.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### newOutputStream

          public static OutputStream newOutputStream(Path path,
                                                     boolean append)
                                              throws IOException

      Creates a new OutputStream by opening or creating a file, returning an output stream that may be used to write bytes to the file.
      Parameters:
        `path` - the Path.
        `append` - Whether or not to append.
      Returns:
        a new OutputStream.
      Throws:
        `IOException` - if an I/O error occurs.
      See Also:
        `Files.newOutputStream(Path, OpenOption...)`

    - #### newOutputStream

          static OutputStream newOutputStream(Path path,
                                              LinkOption[] linkOptions,
                                              OpenOption... openOptions)
                                       throws IOException

      Throws:
        `IOException`

    - #### noFollowLinkOptionArray

          public static LinkOption[] noFollowLinkOptionArray()

      Copy of the `LinkOption` array for `LinkOption.NOFOLLOW_LINKS`.
      Returns:
        Copy of the `LinkOption` array for `LinkOption.NOFOLLOW_LINKS`.

    - #### readAttributes

          public static <A extends BasicFileAttributes> A readAttributes(Path path,
                                                                         Class<A> type,
                                                                         LinkOption... options)

      Reads the BasicFileAttributes from the given path. Returns null if the attributes can't be read.
      Type Parameters:
        `A` - The `BasicFileAttributes` type
      Parameters:
        `path` - The Path to test.
        `type` - the `Class` of the file attributes required to read.
        `options` - options indicating how to handle symbolic links.
      Returns:
        the file attributes or null if the attributes can't be read.
      See Also:
        `Files.readAttributes(Path, Class, LinkOption...)`

    - #### readBasicFileAttributes

          public static BasicFileAttributes readBasicFileAttributes(Path path)
                                                             throws IOException

      Reads the BasicFileAttributes from the given path.
      Parameters:
        `path` - the path to read.
      Returns:
        the path attributes.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### readBasicFileAttributes

          public static BasicFileAttributes readBasicFileAttributes(Path path,
                                                                    LinkOption... options)

      Reads the BasicFileAttributes from the given path. Returns null if the attributes can't be read.
      Parameters:
        `path` - the path to read.
        `options` - options indicating how to handle symbolic links.
      Returns:
        the path attributes.

    - #### readDosFileAttributes

          public static DosFileAttributes readDosFileAttributes(Path path,
                                                                LinkOption... options)

      Reads the DosFileAttributes from the given path. Returns null if the attributes can't be read.
      Parameters:
        `path` - the path to read.
        `options` - options indicating how to handle symbolic links.
      Returns:
        the path attributes.

    - #### readOsFileAttributes

          public static BasicFileAttributes readOsFileAttributes(Path path,
                                                                 LinkOption... options)

      Reads the PosixFileAttributes or DosFileAttributes from the given path. Returns null if the attributes can't be read.
      Parameters:
        `path` - The Path to read.
        `options` - options indicating how to handle symbolic links.
      Returns:
        the file attributes.

    - #### readPosixFileAttributes

          public static PosixFileAttributes readPosixFileAttributes(Path path,
                                                                    LinkOption... options)

      Reads the PosixFileAttributes from the given path. Returns null instead of throwing `UnsupportedOperationException`.
      Parameters:
        `path` - The Path to read.
        `options` - options indicating how to handle symbolic links.
      Returns:
        the file attributes.

    - #### readString

          public static String readString(Path path,
                                          Charset charset)
                                   throws IOException

      Reads the file contents at the given path as a String using the Charset.
      Parameters:
        `path` - The source path.
        `charset` - How to convert bytes to a String, null uses the default Charset.
      Returns:
        the file contents as a new String.
      Throws:
        `IOException` - if an I/O error occurs reading from the stream.
      See Also:
        `Files.readAllBytes(Path)`, `Charsets.toCharset(Charset)`

    - #### relativize

          static List<Path> relativize(Collection<Path> collection,
                                       Path parent,
                                       boolean sort,
                                       Comparator<? super Path> comparator)

      Relativizes all files in the given `collection` against a `parent`.
      Parameters:
        `collection` - The collection of paths to relativize.
        `parent` - relativizes against this parent path.
        `sort` - Whether to sort the result.
        `comparator` - How to sort.
      Returns:
        A collection of relativized paths, optionally sorted.

    - #### resolve

          static Path resolve(Path targetDirectory,
                              Path otherPath)

    - #### setLastModifiedTime

          public static void setLastModifiedTime(Path sourceFile,
                                                 Path targetFile)
                                          throws IOException

      Sets the given `targetFile`'s last modified time to the value from `sourceFile`.
      Parameters:
        `sourceFile` - The source path to query.
        `targetFile` - The target path to set.
      Throws:
        `NullPointerException` - if sourceFile is `null`.
        `NullPointerException` - if targetFile is `null`.
        `IOException` - if setting the last-modified time failed.

    - #### setReadOnly

          public static Path setReadOnly(Path path,
                                         boolean readOnly,
                                         LinkOption... linkOptions)
                                  throws IOException

      Sets the given Path to the `readOnly` value.

      This behavior is OS dependent.

      Parameters:
        `path` - The path to set.
        `readOnly` - true for read-only, false for not read-only.
        `linkOptions` - options indicating how to handle symbolic links.
      Returns:
        The given path.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### sizeOf

          public static long sizeOf(Path path)
                             throws IOException

      Returns the size of the given file or directory. If the provided `Path` is a regular file, then the file's size is returned. If the argument is a directory, then the size of the directory is calculated recursively.

      Note that overflow is not detected, and the return value may be negative if overflow occurs. See `sizeOfAsBigInteger(Path)` for an alternative method that does not overflow.

      Parameters:
        `path` - the regular file or directory to return the size of, must not be `null`.
      Returns:
        the length of the file, or recursive size of the directory, in bytes.
      Throws:
        `NullPointerException` - if the file is `null`.
        `IllegalArgumentException` - if the file does not exist.
        `IOException` - if an I/O error occurs.

    - #### sizeOfAsBigInteger

          public static BigInteger sizeOfAsBigInteger(Path path)
                                               throws IOException

      Returns the size of the given file or directory. If the provided `Path` is a regular file, then the file's size is returned. If the argument is a directory, then the size of the directory is calculated recursively.
      Parameters:
        `path` - the regular file or directory to return the size of (must not be `null`).
      Returns:
        the length of the file, or recursive size of the directory, provided (in bytes).
      Throws:
        `NullPointerException` - if the file is `null`.
        `IllegalArgumentException` - if the file does not exist.
        `IOException` - if an I/O error occurs.

    - #### sizeOfDirectory

          public static long sizeOfDirectory(Path directory)
                                      throws IOException

      Counts the size of a directory recursively (sum of the size of all files).

      Note that overflow is not detected, and the return value may be negative if overflow occurs. See `sizeOfDirectoryAsBigInteger(Path)` for an alternative method that does not overflow.

      Parameters:
        `directory` - directory to inspect, must not be `null`.
      Returns:
        size of directory in bytes, 0 if directory is security restricted, a negative number when the real total is greater than `Long.MAX_VALUE`.
      Throws:
        `NullPointerException` - if the directory is `null`.
        `IOException` - if an I/O error occurs.

    - #### sizeOfDirectoryAsBigInteger

          public static BigInteger sizeOfDirectoryAsBigInteger(Path directory)
                                                        throws IOException

      Counts the size of a directory recursively (sum of the size of all files).
      Parameters:
        `directory` - directory to inspect, must not be `null`.
      Returns:
        size of directory in bytes, 0 if directory is security restricted.
      Throws:
        `NullPointerException` - if the directory is `null`.
        `IOException` - if an I/O error occurs.

    - #### toFileVisitOptionSet

          static Set<FileVisitOption> toFileVisitOptionSet(FileVisitOption... fileVisitOptions)

      Converts an array of `FileVisitOption` to a `Set`.
      Parameters:
        `fileVisitOptions` - input array.
      Returns:
        a new Set.

    - #### touch

          public static Path touch(Path file)
                            throws IOException

      Implements behavior similar to the Unix "touch" utility. Creates a new file with size 0, or, if the file exists, just updates the file's modified time. this method creates parent directories if they do not exist.
      Parameters:
        `file` - the file to touch.
      Returns:
        The given file.
      Throws:
        `NullPointerException` - if the parameter is `null`.
        `IOException` - if setting the last-modified time failed or an I/O problem occurs.\

    - #### visitFileTree

          public static <T extends FileVisitor<? super Path>> T visitFileTree(T visitor,
                                                                              Path directory)
                                                                       throws IOException

      Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor. Note that `Files.walkFileTree(Path,FileVisitor)` returns the given path.
      Type Parameters:
        `T` - See `Files.walkFileTree(Path,FileVisitor)`.
      Parameters:
        `visitor` - See `Files.walkFileTree(Path,FileVisitor)`.
        `directory` - See `Files.walkFileTree(Path,FileVisitor)`.
      Returns:
        the given visitor.
      Throws:
        `NoSuchFileException` - if the directory does not exist.
        `IOException` - if an I/O error is thrown by a visitor method.
        `NullPointerException` - if the directory is `null`.

    - #### visitFileTree

          public static <T extends FileVisitor<? super Path>> T visitFileTree(T visitor,
                                                                              Path start,
                                                                              Set<FileVisitOption> options,
                                                                              int maxDepth)
                                                                       throws IOException

      Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor. Note that `Files.walkFileTree(Path,FileVisitor)` returns the given path.
      Type Parameters:
        `T` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
      Parameters:
        `start` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
        `options` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
        `maxDepth` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
        `visitor` - See `Files.walkFileTree(Path,Set,int,FileVisitor)`.
      Returns:
        the given visitor.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### visitFileTree

          public static <T extends FileVisitor<? super Path>> T visitFileTree(T visitor,
                                                                              String first,
                                                                              String... more)
                                                                       throws IOException

      Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor. Note that `Files.walkFileTree(Path,FileVisitor)` returns the given path.
      Type Parameters:
        `T` - See `Files.walkFileTree(Path,FileVisitor)`.
      Parameters:
        `visitor` - See `Files.walkFileTree(Path,FileVisitor)`.
        `first` - See `Paths.get(String,String[])`.
        `more` - See `Paths.get(String,String[])`.
      Returns:
        the given visitor.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### visitFileTree

          public static <T extends FileVisitor<? super Path>> T visitFileTree(T visitor,
                                                                              URI uri)
                                                                       throws IOException

      Performs `Files.walkFileTree(Path,FileVisitor)` and returns the given visitor. Note that `Files.walkFileTree(Path,FileVisitor)` returns the given path.
      Type Parameters:
        `T` - See `Files.walkFileTree(Path,FileVisitor)`.
      Parameters:
        `visitor` - See `Files.walkFileTree(Path,FileVisitor)`.
        `uri` - See `Paths.get(URI)`.
      Returns:
        the given visitor.
      Throws:
        `IOException` - if an I/O error is thrown by a visitor method.

    - #### waitFor

          public static boolean waitFor(Path file,
                                        java.time.Duration timeout,
                                        LinkOption... options)

      Waits for the file system to detect a file's presence, with a timeout.

      This method repeatedly tests `Files.exists(Path,LinkOption...)` until it returns true up to the maximum time given.

      Parameters:
        `file` - the file to check, must not be `null`.
        `timeout` - the maximum time to wait.
        `options` - options indicating how to handle symbolic links.
      Returns:
        true if file exists.
      Throws:
        `NullPointerException` - if the file is `null`.

    - #### walk

          public static java.util.stream.Stream<Path> walk(Path start,
                                                           PathFilter pathFilter,
                                                           int maxDepth,
                                                           boolean readAttributes,
                                                           FileVisitOption... options)
                                                    throws IOException

      Returns a stream of filtered paths.

      The returned `Stream` may wrap one or more `DirectoryStream`s. When you require timely disposal of file system resources, use a `try`-with-resources block to ensure invocation of the stream's `BaseStream.close()` method after the stream operations are completed. Calling a closed stream causes a `IllegalStateException`.

      Parameters:
        `start` - the start path
        `pathFilter` - the path filter
        `maxDepth` - the maximum depth of directories to walk.
        `readAttributes` - whether to call the filters with file attributes (false passes null).
        `options` - the options to configure the walk.
      Returns:
        a filtered stream of paths.
      Throws:
        `IOException` - if an I/O error is thrown when accessing the starting file.

    - #### writeString

          public static Path writeString(Path path,
                                         CharSequence charSequence,
                                         Charset charset,
                                         OpenOption... openOptions)
                                  throws IOException

      Writes the given character sequence to a file at the given path.
      Parameters:
        `path` - The target file.
        `charSequence` - The character sequence text.
        `charset` - The Charset to encode the text.
        `openOptions` - options How to open the file.
      Returns:
        The given path.
      Throws:
        `IOException` - if an I/O error occurs writing to or creating the file.
        `NullPointerException` - if either `path` or `charSequence` is `null`.