Class PathUtils


  • public final class PathUtils
    extends java.lang.Object
    NIO Path utilities.
    Since:
    2.7
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  PathUtils.RelativeSortedPaths
      Private worker/holder that computes and tracks relative path names and their equality.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private PathUtils()
      Does allow to instantiate.
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static AccumulatorPathVisitor accumulate​(java.nio.file.Path directory, int maxDepth, java.nio.file.FileVisitOption[] fileVisitOptions)
      Accumulates file tree information in a AccumulatorPathVisitor.
      static Counters.PathCounters cleanDirectory​(java.nio.file.Path directory)
      Cleans a directory including subdirectories without deleting directories.
      static Counters.PathCounters cleanDirectory​(java.nio.file.Path directory, DeleteOption... deleteOptions)
      Cleans a directory including subdirectories without deleting directories.
      private static int compareLastModifiedTimeTo​(java.nio.file.Path file, java.nio.file.attribute.FileTime fileTime, java.nio.file.LinkOption... options)
      Compares the given Path's last modified time to the given file time.
      static long copy​(IOSupplier<java.io.InputStream> in, java.nio.file.Path target, java.nio.file.CopyOption... copyOptions)
      Copies the InputStream from the supplier with Files.copy(InputStream, Path, CopyOption...).
      static Counters.PathCounters copyDirectory​(java.nio.file.Path sourceDirectory, java.nio.file.Path targetDirectory, java.nio.file.CopyOption... copyOptions)
      Copies a directory to another directory.
      static java.nio.file.Path copyFile​(java.net.URL sourceFile, java.nio.file.Path targetFile, java.nio.file.CopyOption... copyOptions)
      Copies a URL to a directory.
      static java.nio.file.Path copyFileToDirectory​(java.net.URL sourceFile, java.nio.file.Path targetDirectory, java.nio.file.CopyOption... copyOptions)
      Copies a URL to a directory.
      static java.nio.file.Path copyFileToDirectory​(java.nio.file.Path sourceFile, java.nio.file.Path targetDirectory, java.nio.file.CopyOption... copyOptions)
      Copies a file to a directory.
      static Counters.PathCounters countDirectory​(java.nio.file.Path directory)
      Counts aspects of a directory including subdirectories.
      static Counters.PathCounters countDirectoryAsBigInteger​(java.nio.file.Path directory)
      Counts aspects of a directory including subdirectories.
      static java.nio.file.Path createParentDirectories​(java.nio.file.Path path, java.nio.file.attribute.FileAttribute<?>... attrs)
      Creates the parent directories for the given path.
      static java.nio.file.Path createParentDirectories​(java.nio.file.Path path, java.nio.file.LinkOption linkOption, java.nio.file.attribute.FileAttribute<?>... attrs)
      Creates the parent directories for the given path.
      static java.nio.file.Path current()
      Gets the current directory.
      static Counters.PathCounters delete​(java.nio.file.Path path)
      Deletes a file or directory.
      static Counters.PathCounters delete​(java.nio.file.Path path, java.nio.file.LinkOption[] linkOptions, DeleteOption... deleteOptions)
      Deletes a file or directory.
      static Counters.PathCounters delete​(java.nio.file.Path path, DeleteOption... deleteOptions)
      Deletes a file or directory.
      static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory)
      Deletes a directory including subdirectories.
      static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory, java.nio.file.LinkOption[] linkOptions, DeleteOption... deleteOptions)
      Deletes a directory including subdirectories.
      static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory, DeleteOption... deleteOptions)
      Deletes a directory including subdirectories.
      static Counters.PathCounters deleteFile​(java.nio.file.Path file)
      Deletes the given file.
      static Counters.PathCounters deleteFile​(java.nio.file.Path file, java.nio.file.LinkOption[] linkOptions, DeleteOption... deleteOptions)
      Deletes the given file.
      static Counters.PathCounters deleteFile​(java.nio.file.Path file, DeleteOption... deleteOptions)
      Deletes the given file.
      static void deleteOnExit​(java.nio.file.Path path)
      Delegates to File.deleteOnExit().
      static boolean directoryAndFileContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2)
      Compares the file sets of two Paths to determine if they are equal or not while considering file contents.
      static boolean directoryAndFileContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2, java.nio.file.LinkOption[] linkOptions, java.nio.file.OpenOption[] openOptions, java.nio.file.FileVisitOption[] fileVisitOption)
      Compares the file sets of two Paths to determine if they are equal or not while considering file contents.
      static boolean directoryContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2)
      Compares the file sets of two Paths to determine if they are equal or not without considering file contents.
      static boolean directoryContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2, int maxDepth, java.nio.file.LinkOption[] linkOptions, java.nio.file.FileVisitOption[] fileVisitOptions)
      Compares the file sets of two Paths to determine if they are equal or not without considering file contents.
      private static boolean exists​(java.nio.file.Path path, java.nio.file.LinkOption... options)  
      static boolean fileContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2)
      Compares the file contents of two Paths to determine if they are equal or not.
      static boolean fileContentEquals​(java.nio.file.Path path1, java.nio.file.Path path2, java.nio.file.LinkOption[] linkOptions, java.nio.file.OpenOption[] openOptions)
      Compares the file contents of two Paths to determine if they are equal or not.
      static java.nio.file.Path[] filter​(PathFilter filter, java.nio.file.Path... paths)
      Applies an IOFileFilter to the provided File objects.
      private static <R,​A>
      R
      filterPaths​(PathFilter filter, java.util.stream.Stream<java.nio.file.Path> stream, java.util.stream.Collector<? super java.nio.file.Path,​A,​R> collector)  
      static java.util.List<java.nio.file.attribute.AclEntry> getAclEntryList​(java.nio.file.Path sourcePath)
      Reads the access control list from a file attribute view.
      static java.nio.file.attribute.AclFileAttributeView getAclFileAttributeView​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Shorthand for Files.getFileAttributeView(path, AclFileAttributeView.class).
      static java.nio.file.attribute.DosFileAttributeView getDosFileAttributeView​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Shorthand for Files.getFileAttributeView(path, DosFileAttributeView.class).
      static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.io.File file)
      Gets the file's last modified time or null if the file does not exist.
      static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.net.URI uri)
      Gets the file's last modified time or null if the file does not exist.
      static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.net.URL url)
      Gets the file's last modified time or null if the file does not exist.
      static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.nio.file.Path path, java.nio.file.attribute.FileTime defaultIfAbsent, java.nio.file.LinkOption... options)
      Gets the file's last modified time or null if the file does not exist.
      static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Gets the file's last modified time or null if the file does not exist.
      private static java.nio.file.attribute.FileTime getLastModifiedTime​(java.nio.file.Path path, java.nio.file.LinkOption... options)  
      private static java.nio.file.Path getParent​(java.nio.file.Path path)  
      static java.nio.file.attribute.PosixFileAttributeView getPosixFileAttributeView​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Shorthand for Files.getFileAttributeView(path, PosixFileAttributeView.class).
      static java.nio.file.Path getTempDirectory()
      Gets a Path representing the system temporary directory.
      static boolean isDirectory​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Tests whether the given Path is a directory or not.
      static boolean isEmpty​(java.nio.file.Path path)
      Tests whether the given file or directory is empty.
      static boolean isEmptyDirectory​(java.nio.file.Path directory)
      Tests whether the directory is empty.
      static boolean isEmptyFile​(java.nio.file.Path file)
      Tests whether the given file is empty.
      static boolean isNewer​(java.nio.file.Path file, long timeMillis, java.nio.file.LinkOption... options)
      Tests if the given Path is newer than the given time reference.
      static boolean isNewer​(java.nio.file.Path file, java.nio.file.attribute.FileTime fileTime, java.nio.file.LinkOption... options)
      Tests if the given Path is newer than the given time reference.
      static boolean isNewer​(java.nio.file.Path file, java.nio.file.Path reference)
      Tests if the given Path is newer than the reference Path.
      static boolean isNewer​(java.nio.file.Path file, java.time.chrono.ChronoZonedDateTime<?> czdt, java.nio.file.LinkOption... options)
      Tests if the given Path is newer than the given time reference.
      static boolean isNewer​(java.nio.file.Path file, java.time.Instant instant, java.nio.file.LinkOption... options)
      Tests if the given Path is newer than the given time reference.
      static boolean isOlder​(java.nio.file.Path file, long timeMillis, java.nio.file.LinkOption... options)
      Tests if the given Path is older than the given time reference.
      static boolean isOlder​(java.nio.file.Path file, java.nio.file.attribute.FileTime fileTime, java.nio.file.LinkOption... options)
      Tests if the given Path is older than the given time reference.
      static boolean isOlder​(java.nio.file.Path file, java.nio.file.Path reference)
      Tests if the given Path is older than the reference Path.
      static boolean isOlder​(java.nio.file.Path file, java.time.Instant instant, java.nio.file.LinkOption... options)
      Tests if the given Path is older than the given time reference.
      static boolean isPosix​(java.nio.file.Path test, java.nio.file.LinkOption... options)
      Tests whether the given path is on a POSIX file system.
      static boolean isRegularFile​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Tests whether the given Path is a regular file or not.
      static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream​(java.nio.file.Path dir, PathFilter pathFilter)
      Creates a new DirectoryStream for Paths rooted at the given directory.
      static java.io.OutputStream newOutputStream​(java.nio.file.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 java.io.OutputStream newOutputStream​(java.nio.file.Path path, java.nio.file.LinkOption[] linkOptions, java.nio.file.OpenOption... openOptions)  
      static java.nio.file.LinkOption[] noFollowLinkOptionArray()
      Copy of the LinkOption array for LinkOption.NOFOLLOW_LINKS.
      private static boolean notExists​(java.nio.file.Path path, java.nio.file.LinkOption... options)  
      private static boolean overrideReadOnly​(DeleteOption... deleteOptions)
      Returns true if the given options contain StandardDeleteOption.OVERRIDE_READ_ONLY.
      static <A extends java.nio.file.attribute.BasicFileAttributes>
      A
      readAttributes​(java.nio.file.Path path, java.lang.Class<A> type, java.nio.file.LinkOption... options)
      Reads the BasicFileAttributes from the given path.
      static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributes​(java.nio.file.Path path)
      Deprecated.
      Will be removed in 3.0.0 in favor of readBasicFileAttributes(Path, LinkOption...).
      static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributes​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Reads the BasicFileAttributes from the given path.
      static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributesUnchecked​(java.nio.file.Path path)
      static java.nio.file.attribute.DosFileAttributes readDosFileAttributes​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Reads the DosFileAttributes from the given path.
      private static java.nio.file.Path readIfSymbolicLink​(java.nio.file.Path path)  
      static java.nio.file.attribute.BasicFileAttributes readOsFileAttributes​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Reads the PosixFileAttributes or DosFileAttributes from the given path.
      static java.nio.file.attribute.PosixFileAttributes readPosixFileAttributes​(java.nio.file.Path path, java.nio.file.LinkOption... options)
      Reads the PosixFileAttributes from the given path.
      static java.lang.String readString​(java.nio.file.Path path, java.nio.charset.Charset charset)
      Reads the given path as a String.
      (package private) static java.util.List<java.nio.file.Path> relativize​(java.util.Collection<java.nio.file.Path> collection, java.nio.file.Path parent, boolean sort, java.util.Comparator<? super java.nio.file.Path> comparator)
      Relativizes all files in the given collection against a parent.
      private static java.nio.file.Path requireExists​(java.nio.file.Path file, java.lang.String fileParamName, java.nio.file.LinkOption... options)
      Requires that the given File exists and throws an IllegalArgumentException if it doesn't.
      private static boolean setDosReadOnly​(java.nio.file.Path path, boolean readOnly, java.nio.file.LinkOption... linkOptions)  
      static void setLastModifiedTime​(java.nio.file.Path sourceFile, java.nio.file.Path targetFile)
      Sets the given targetFile's last modified time to the value from sourceFile.
      private static boolean setPosixDeletePermissions​(java.nio.file.Path parent, boolean enableDeleteChildren, java.nio.file.LinkOption... linkOptions)
      To delete a file in POSIX, you need Write and Execute permissions on its parent directory.
      private static boolean setPosixPermissions​(java.nio.file.Path path, boolean addPermissions, java.util.List<java.nio.file.attribute.PosixFilePermission> updatePermissions, java.nio.file.LinkOption... linkOptions)
      Low-level POSIX permission operation to set permissions.
      private static void setPosixReadOnlyFile​(java.nio.file.Path path, boolean readOnly, java.nio.file.LinkOption... linkOptions)  
      static java.nio.file.Path setReadOnly​(java.nio.file.Path path, boolean readOnly, java.nio.file.LinkOption... linkOptions)
      Sets the given Path to the readOnly value.
      static long sizeOf​(java.nio.file.Path path)
      Returns the size of the given file or directory.
      static java.math.BigInteger sizeOfAsBigInteger​(java.nio.file.Path path)
      Returns the size of the given file or directory.
      static long sizeOfDirectory​(java.nio.file.Path directory)
      Counts the size of a directory recursively (sum of the size of all files).
      static java.math.BigInteger sizeOfDirectoryAsBigInteger​(java.nio.file.Path directory)
      Counts the size of a directory recursively (sum of the size of all files).
      (package private) static java.util.Set<java.nio.file.FileVisitOption> toFileVisitOptionSet​(java.nio.file.FileVisitOption... fileVisitOptions)
      Converts an array of FileVisitOption to a Set.
      static java.nio.file.Path touch​(java.nio.file.Path file)
      Implements behavior similar to the Unix "touch" utility.
      static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>>
      T
      visitFileTree​(T visitor, java.lang.String first, java.lang.String... more)
      Performs Files.walkFileTree(Path,FileVisitor) and returns the given visitor.
      static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>>
      T
      visitFileTree​(T visitor, java.net.URI uri)
      Performs Files.walkFileTree(Path,FileVisitor) and returns the given visitor.
      static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>>
      T
      visitFileTree​(T visitor, java.nio.file.Path directory)
      Performs Files.walkFileTree(Path,FileVisitor) and returns the given visitor.
      static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>>
      T
      visitFileTree​(T visitor, java.nio.file.Path start, java.util.Set<java.nio.file.FileVisitOption> options, int maxDepth)
      Performs Files.walkFileTree(Path,FileVisitor) and returns the given visitor.
      static boolean waitFor​(java.nio.file.Path file, java.time.Duration timeout, java.nio.file.LinkOption... options)
      Waits for the file system to propagate a file creation, with a timeout.
      static java.util.stream.Stream<java.nio.file.Path> walk​(java.nio.file.Path start, PathFilter pathFilter, int maxDepth, boolean readAttributes, java.nio.file.FileVisitOption... options)
      Returns a stream of filtered paths.
      private static <R> R withPosixFileAttributes​(java.nio.file.Path path, java.nio.file.LinkOption[] linkOptions, boolean overrideReadOnly, IOFunction<java.nio.file.attribute.PosixFileAttributes,​R> function)  
      static java.nio.file.Path writeString​(java.nio.file.Path path, java.lang.CharSequence charSequence, java.nio.charset.Charset charset, java.nio.file.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

      • OPEN_OPTIONS_TRUNCATE

        private static final java.nio.file.OpenOption[] OPEN_OPTIONS_TRUNCATE
      • OPEN_OPTIONS_APPEND

        private static final java.nio.file.OpenOption[] OPEN_OPTIONS_APPEND
      • EMPTY_COPY_OPTIONS

        public static final java.nio.file.CopyOption[] EMPTY_COPY_OPTIONS
        Empty CopyOption array.
        Since:
        2.8.0
      • EMPTY_DELETE_OPTION_ARRAY

        public static final DeleteOption[] EMPTY_DELETE_OPTION_ARRAY
        Empty DeleteOption array.
        Since:
        2.8.0
      • EMPTY_FILE_ATTRIBUTE_ARRAY

        public static final java.nio.file.attribute.FileAttribute<?>[] EMPTY_FILE_ATTRIBUTE_ARRAY
        Empty FileAttribute array.
        Since:
        2.13.0
      • EMPTY_FILE_VISIT_OPTION_ARRAY

        public static final java.nio.file.FileVisitOption[] EMPTY_FILE_VISIT_OPTION_ARRAY
        Empty FileVisitOption array.
      • EMPTY_LINK_OPTION_ARRAY

        public static final java.nio.file.LinkOption[] EMPTY_LINK_OPTION_ARRAY
        Empty LinkOption array.
      • NOFOLLOW_LINK_OPTION_ARRAY

        @Deprecated
        public static final java.nio.file.LinkOption[] NOFOLLOW_LINK_OPTION_ARRAY
        Deprecated.
        LinkOption array for LinkOption.NOFOLLOW_LINKS.
        Since:
        2.9.0
      • NULL_LINK_OPTION

        static final java.nio.file.LinkOption NULL_LINK_OPTION
        A LinkOption used to follow link in this class, the inverse of LinkOption.NOFOLLOW_LINKS.
        Since:
        2.12.0
      • EMPTY_OPEN_OPTION_ARRAY

        public static final java.nio.file.OpenOption[] EMPTY_OPEN_OPTION_ARRAY
        Empty OpenOption array.
      • EMPTY_PATH_ARRAY

        public static final java.nio.file.Path[] EMPTY_PATH_ARRAY
        Empty Path array.
        Since:
        2.9.0
    • Constructor Detail

      • PathUtils

        private PathUtils()
        Does allow to instantiate.
    • Method Detail

      • accumulate

        private static AccumulatorPathVisitor accumulate​(java.nio.file.Path directory,
                                                         int maxDepth,
                                                         java.nio.file.FileVisitOption[] fileVisitOptions)
                                                  throws java.io.IOException
        Accumulates file tree information in a AccumulatorPathVisitor.
        Parameters:
        directory - The directory to accumulate information.
        maxDepth - See Files.walkFileTree(Path,Set,int,FileVisitor).
        fileVisitOptions - See Files.walkFileTree(Path,Set,int,FileVisitor).
        Returns:
        file tree information.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • cleanDirectory

        public static Counters.PathCounters cleanDirectory​(java.nio.file.Path directory)
                                                    throws java.io.IOException
        Cleans a directory including subdirectories without deleting directories.
        Parameters:
        directory - directory to clean.
        Returns:
        The visitation path counters.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • cleanDirectory

        public static Counters.PathCounters cleanDirectory​(java.nio.file.Path directory,
                                                           DeleteOption... deleteOptions)
                                                    throws java.io.IOException
        Cleans a directory including subdirectories without deleting directories.
        Parameters:
        directory - directory to clean.
        deleteOptions - How to handle deletion.
        Returns:
        The visitation path counters.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
        Since:
        2.8.0
      • compareLastModifiedTimeTo

        private static int compareLastModifiedTimeTo​(java.nio.file.Path file,
                                                     java.nio.file.attribute.FileTime fileTime,
                                                     java.nio.file.LinkOption... options)
                                              throws java.io.IOException
        Compares the given Path's last modified time to the given file time.
        Parameters:
        file - the Path to test.
        fileTime - the time reference.
        options - options indicating how to handle symbolic links.
        Returns:
        See FileTime.compareTo(FileTime)
        Throws:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
      • copy

        public static long copy​(IOSupplier<java.io.InputStream> in,
                                java.nio.file.Path target,
                                java.nio.file.CopyOption... copyOptions)
                         throws java.io.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:
        java.io.IOException - See Files.copy(InputStream, Path, CopyOption...)
        Since:
        2.12.0
      • copyDirectory

        public static Counters.PathCounters copyDirectory​(java.nio.file.Path sourceDirectory,
                                                          java.nio.file.Path targetDirectory,
                                                          java.nio.file.CopyOption... copyOptions)
                                                   throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • copyFile

        public static java.nio.file.Path copyFile​(java.net.URL sourceFile,
                                                  java.nio.file.Path targetFile,
                                                  java.nio.file.CopyOption... copyOptions)
                                           throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        See Also:
        Files.copy(InputStream, Path, CopyOption...)
      • copyFileToDirectory

        public static java.nio.file.Path copyFileToDirectory​(java.nio.file.Path sourceFile,
                                                             java.nio.file.Path targetDirectory,
                                                             java.nio.file.CopyOption... copyOptions)
                                                      throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        See Also:
        Files.copy(Path, Path, CopyOption...)
      • copyFileToDirectory

        public static java.nio.file.Path copyFileToDirectory​(java.net.URL sourceFile,
                                                             java.nio.file.Path targetDirectory,
                                                             java.nio.file.CopyOption... copyOptions)
                                                      throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        See Also:
        Files.copy(InputStream, Path, CopyOption...)
      • countDirectory

        public static Counters.PathCounters countDirectory​(java.nio.file.Path directory)
                                                    throws java.io.IOException
        Counts aspects of a directory including subdirectories.
        Parameters:
        directory - directory to delete.
        Returns:
        The visitor used to count the given directory.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • countDirectoryAsBigInteger

        public static Counters.PathCounters countDirectoryAsBigInteger​(java.nio.file.Path directory)
                                                                throws java.io.IOException
        Counts aspects of a directory including subdirectories.
        Parameters:
        directory - directory to count.
        Returns:
        The visitor used to count the given directory.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • createParentDirectories

        public static java.nio.file.Path createParentDirectories​(java.nio.file.Path path,
                                                                 java.nio.file.attribute.FileAttribute<?>... attrs)
                                                          throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.9.0
      • createParentDirectories

        public static java.nio.file.Path createParentDirectories​(java.nio.file.Path path,
                                                                 java.nio.file.LinkOption linkOption,
                                                                 java.nio.file.attribute.FileAttribute<?>... attrs)
                                                          throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • current

        public static java.nio.file.Path current()
        Gets the current directory.
        Returns:
        the current directory.
        Since:
        2.9.0
      • delete

        public static Counters.PathCounters delete​(java.nio.file.Path path)
                                            throws java.io.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:
        java.lang.NullPointerException - if the directory is null
        java.io.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​(java.nio.file.Path path,
                                                   DeleteOption... deleteOptions)
                                            throws java.io.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:
        java.lang.NullPointerException - if the directory is null
        java.io.IOException - if an I/O error is thrown by a visitor method or if an I/O error occurs.
        Since:
        2.8.0
      • delete

        public static Counters.PathCounters delete​(java.nio.file.Path path,
                                                   java.nio.file.LinkOption[] linkOptions,
                                                   DeleteOption... deleteOptions)
                                            throws java.io.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:
        java.lang.NullPointerException - if the directory is null
        java.io.IOException - if an I/O error is thrown by a visitor method or if an I/O error occurs.
        Since:
        2.9.0
      • deleteDirectory

        public static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory)
                                                     throws java.io.IOException
        Deletes a directory including subdirectories.
        Parameters:
        directory - directory to delete.
        Returns:
        The visitor used to delete the given directory.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • deleteDirectory

        public static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory,
                                                            DeleteOption... deleteOptions)
                                                     throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
        Since:
        2.8.0
      • deleteDirectory

        public static Counters.PathCounters deleteDirectory​(java.nio.file.Path directory,
                                                            java.nio.file.LinkOption[] linkOptions,
                                                            DeleteOption... deleteOptions)
                                                     throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
        Since:
        2.9.0
      • deleteFile

        public static Counters.PathCounters deleteFile​(java.nio.file.Path file)
                                                throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.nio.file.NoSuchFileException - if the file is a directory.
      • deleteFile

        public static Counters.PathCounters deleteFile​(java.nio.file.Path file,
                                                       DeleteOption... deleteOptions)
                                                throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.nio.file.NoSuchFileException - if the file is a directory.
        Since:
        2.8.0
      • deleteFile

        public static Counters.PathCounters deleteFile​(java.nio.file.Path file,
                                                       java.nio.file.LinkOption[] linkOptions,
                                                       DeleteOption... deleteOptions)
                                                throws java.nio.file.NoSuchFileException,
                                                       java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.nio.file.NoSuchFileException - if the file is a directory.
        Since:
        2.9.0
      • deleteOnExit

        public static void deleteOnExit​(java.nio.file.Path path)
        Delegates to File.deleteOnExit().
        Parameters:
        path - the path to delete.
        Since:
        3.13.0
      • directoryAndFileContentEquals

        public static boolean directoryAndFileContentEquals​(java.nio.file.Path path1,
                                                            java.nio.file.Path path2)
                                                     throws java.io.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.
        Returns:
        Whether the two directories contain the same files while considering file contents.
        Throws:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • directoryAndFileContentEquals

        public static boolean directoryAndFileContentEquals​(java.nio.file.Path path1,
                                                            java.nio.file.Path path2,
                                                            java.nio.file.LinkOption[] linkOptions,
                                                            java.nio.file.OpenOption[] openOptions,
                                                            java.nio.file.FileVisitOption[] fileVisitOption)
                                                     throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • directoryContentEquals

        public static boolean directoryContentEquals​(java.nio.file.Path path1,
                                                     java.nio.file.Path path2)
                                              throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • directoryContentEquals

        public static boolean directoryContentEquals​(java.nio.file.Path path1,
                                                     java.nio.file.Path path2,
                                                     int maxDepth,
                                                     java.nio.file.LinkOption[] linkOptions,
                                                     java.nio.file.FileVisitOption[] fileVisitOptions)
                                              throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • exists

        private static boolean exists​(java.nio.file.Path path,
                                      java.nio.file.LinkOption... options)
      • fileContentEquals

        public static boolean fileContentEquals​(java.nio.file.Path path1,
                                                java.nio.file.Path path2)
                                         throws java.io.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 stream.
        path2 - the second stream.
        Returns:
        true if the content of the streams are equal or they both don't exist, false otherwise.
        Throws:
        java.lang.NullPointerException - if either input is null.
        java.io.IOException - if an I/O error occurs.
        See Also:
        FileUtils.contentEquals(java.io.File, java.io.File)
      • fileContentEquals

        public static boolean fileContentEquals​(java.nio.file.Path path1,
                                                java.nio.file.Path path2,
                                                java.nio.file.LinkOption[] linkOptions,
                                                java.nio.file.OpenOption[] openOptions)
                                         throws java.io.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 stream.
        path2 - the second stream.
        linkOptions - options specifying how files are followed.
        openOptions - options specifying how files are opened.
        Returns:
        true if the content of the streams are equal or they both don't exist, false otherwise.
        Throws:
        java.lang.NullPointerException - if openOptions is null.
        java.io.IOException - if an I/O error occurs.
        See Also:
        FileUtils.contentEquals(java.io.File, java.io.File)
      • filter

        public static java.nio.file.Path[] filter​(PathFilter filter,
                                                  java.nio.file.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:
        java.lang.NullPointerException - if the filter is null
        java.lang.IllegalArgumentException - if files contains a null value.
        Since:
        2.9.0
      • filterPaths

        private static <R,​A> R filterPaths​(PathFilter filter,
                                                 java.util.stream.Stream<java.nio.file.Path> stream,
                                                 java.util.stream.Collector<? super java.nio.file.Path,​A,​R> collector)
      • getAclEntryList

        public static java.util.List<java.nio.file.attribute.AclEntry> getAclEntryList​(java.nio.file.Path sourcePath)
                                                                                throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.8.0
      • getAclFileAttributeView

        public static java.nio.file.attribute.AclFileAttributeView getAclFileAttributeView​(java.nio.file.Path path,
                                                                                           java.nio.file.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.
        Since:
        2.12.0
      • getDosFileAttributeView

        public static java.nio.file.attribute.DosFileAttributeView getDosFileAttributeView​(java.nio.file.Path path,
                                                                                           java.nio.file.LinkOption... options)
        Shorthand for Files.getFileAttributeView(path, DosFileAttributeView.class).
        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.
        Since:
        2.12.0
      • getLastModifiedFileTime

        public static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.io.File file)
                                                                        throws java.io.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:
        java.io.IOException - Thrown if an I/O error occurs.
        Since:
        2.12.0
      • getLastModifiedFileTime

        public static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.nio.file.Path path,
                                                                               java.nio.file.attribute.FileTime defaultIfAbsent,
                                                                               java.nio.file.LinkOption... options)
                                                                        throws java.io.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:
        java.io.IOException - Thrown if an I/O error occurs.
        Since:
        2.12.0
      • getLastModifiedFileTime

        public static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.nio.file.Path path,
                                                                               java.nio.file.LinkOption... options)
                                                                        throws java.io.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:
        java.io.IOException - Thrown if an I/O error occurs.
        Since:
        2.12.0
      • getLastModifiedFileTime

        public static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.net.URI uri)
                                                                        throws java.io.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:
        java.io.IOException - Thrown if an I/O error occurs.
        Since:
        2.12.0
      • getLastModifiedFileTime

        public static java.nio.file.attribute.FileTime getLastModifiedFileTime​(java.net.URL url)
                                                                        throws java.io.IOException,
                                                                               java.net.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:
        java.io.IOException - Thrown if an I/O error occurs.
        java.net.URISyntaxException - if the URL is not formatted strictly according to RFC2396 and cannot be converted to a URI.
        Since:
        2.12.0
      • getLastModifiedTime

        private static java.nio.file.attribute.FileTime getLastModifiedTime​(java.nio.file.Path path,
                                                                            java.nio.file.LinkOption... options)
                                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • getParent

        private static java.nio.file.Path getParent​(java.nio.file.Path path)
      • getPosixFileAttributeView

        public static java.nio.file.attribute.PosixFileAttributeView getPosixFileAttributeView​(java.nio.file.Path path,
                                                                                               java.nio.file.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.
        Since:
        2.12.0
      • getTempDirectory

        public static java.nio.file.Path getTempDirectory()
        Gets a Path representing the system temporary directory.
        Returns:
        the system temporary directory.
        Since:
        2.12.0
      • isDirectory

        public static boolean isDirectory​(java.nio.file.Path path,
                                          java.nio.file.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:
        java.lang.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.
        Since:
        2.9.0
      • isEmpty

        public static boolean isEmpty​(java.nio.file.Path path)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
      • isEmptyDirectory

        public static boolean isEmptyDirectory​(java.nio.file.Path directory)
                                        throws java.io.IOException
        Tests whether the directory is empty.
        Parameters:
        directory - the directory to query.
        Returns:
        whether the directory is empty.
        Throws:
        java.nio.file.NotDirectoryException - if the file could not otherwise be opened because it is not a directory (optional specific exception).
        java.io.IOException - if an I/O error occurs.
        java.lang.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​(java.nio.file.Path file)
                                   throws java.io.IOException
        Tests whether the given file is empty.
        Parameters:
        file - the file to query.
        Returns:
        whether the file is empty.
        Throws:
        java.io.IOException - if an I/O error occurs.
        java.lang.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​(java.nio.file.Path file,
                                      java.time.chrono.ChronoZonedDateTime<?> czdt,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isNewer

        public static boolean isNewer​(java.nio.file.Path file,
                                      java.nio.file.attribute.FileTime fileTime,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isNewer

        public static boolean isNewer​(java.nio.file.Path file,
                                      java.time.Instant instant,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isNewer

        public static boolean isNewer​(java.nio.file.Path file,
                                      long timeMillis,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.9.0
      • isNewer

        public static boolean isNewer​(java.nio.file.Path file,
                                      java.nio.file.Path reference)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • isOlder

        public static boolean isOlder​(java.nio.file.Path file,
                                      java.nio.file.attribute.FileTime fileTime,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isOlder

        public static boolean isOlder​(java.nio.file.Path file,
                                      java.time.Instant instant,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isOlder

        public static boolean isOlder​(java.nio.file.Path file,
                                      long timeMillis,
                                      java.nio.file.LinkOption... options)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • isOlder

        public static boolean isOlder​(java.nio.file.Path file,
                                      java.nio.file.Path reference)
                               throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • isPosix

        public static boolean isPosix​(java.nio.file.Path test,
                                      java.nio.file.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.
        Since:
        2.12.0
      • isRegularFile

        public static boolean isRegularFile​(java.nio.file.Path path,
                                            java.nio.file.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:
        java.lang.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.
        Since:
        2.9.0
      • newDirectoryStream

        public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream​(java.nio.file.Path dir,
                                                                                           PathFilter pathFilter)
                                                                                    throws java.io.IOException
        Creates a new DirectoryStream for Paths rooted at the given directory.
        Parameters:
        dir - the path to the directory to stream.
        pathFilter - the directory stream filter.
        Returns:
        a new instance.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • newOutputStream

        public static java.io.OutputStream newOutputStream​(java.nio.file.Path path,
                                                           boolean append)
                                                    throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
        See Also:
        Files.newOutputStream(Path, OpenOption...)
      • newOutputStream

        static java.io.OutputStream newOutputStream​(java.nio.file.Path path,
                                                    java.nio.file.LinkOption[] linkOptions,
                                                    java.nio.file.OpenOption... openOptions)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • noFollowLinkOptionArray

        public static java.nio.file.LinkOption[] noFollowLinkOptionArray()
        Copy of the LinkOption array for LinkOption.NOFOLLOW_LINKS.
        Returns:
        Copy of the LinkOption array for LinkOption.NOFOLLOW_LINKS.
      • notExists

        private static boolean notExists​(java.nio.file.Path path,
                                         java.nio.file.LinkOption... options)
      • readAttributes

        public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes​(java.nio.file.Path path,
                                                                                               java.lang.Class<A> type,
                                                                                               java.nio.file.LinkOption... options)
        Reads the BasicFileAttributes from the given path. Returns null instead of throwing UnsupportedOperationException. Throws Uncheck instead of IOException.
        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.
        Since:
        2.12.0
        See Also:
        Files.readAttributes(Path, Class, LinkOption...)
      • readBasicFileAttributes

        @Deprecated
        public static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributes​(java.nio.file.Path path)
                                                                                   throws java.io.IOException
        Deprecated.
        Will be removed in 3.0.0 in favor of readBasicFileAttributes(Path, LinkOption...).
        Reads the BasicFileAttributes from the given path.
        Parameters:
        path - the path to read.
        Returns:
        the path attributes.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.9.0
      • readBasicFileAttributes

        public static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributes​(java.nio.file.Path path,
                                                                                          java.nio.file.LinkOption... options)
        Reads the BasicFileAttributes 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 path attributes.
        Since:
        2.12.0
      • readBasicFileAttributesUnchecked

        @Deprecated
        public static java.nio.file.attribute.BasicFileAttributes readBasicFileAttributesUnchecked​(java.nio.file.Path path)
        Reads the BasicFileAttributes from the given path. Returns null instead of throwing UnsupportedOperationException.
        Parameters:
        path - the path to read.
        Returns:
        the path attributes.
        Throws:
        java.io.UncheckedIOException - if an I/O error occurs
        Since:
        2.9.0
      • readDosFileAttributes

        public static java.nio.file.attribute.DosFileAttributes readDosFileAttributes​(java.nio.file.Path path,
                                                                                      java.nio.file.LinkOption... options)
        Reads the DosFileAttributes 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 path attributes.
        Since:
        2.12.0
      • readIfSymbolicLink

        private static java.nio.file.Path readIfSymbolicLink​(java.nio.file.Path path)
                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • readOsFileAttributes

        public static java.nio.file.attribute.BasicFileAttributes readOsFileAttributes​(java.nio.file.Path path,
                                                                                       java.nio.file.LinkOption... options)
        Reads the PosixFileAttributes or DosFileAttributes 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.
        Since:
        2.12.0
      • readPosixFileAttributes

        public static java.nio.file.attribute.PosixFileAttributes readPosixFileAttributes​(java.nio.file.Path path,
                                                                                          java.nio.file.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.
        Since:
        2.12.0
      • readString

        public static java.lang.String readString​(java.nio.file.Path path,
                                                  java.nio.charset.Charset charset)
                                           throws java.io.IOException
        Reads the given path as a String.
        Parameters:
        path - The source path.
        charset - How to convert bytes to a String, null uses the default Charset.
        Returns:
        a new String.
        Throws:
        java.io.IOException - if an I/O error occurs reading from the stream.
        Since:
        2.12.0
        See Also:
        Files.readAllBytes(Path)
      • relativize

        static java.util.List<java.nio.file.Path> relativize​(java.util.Collection<java.nio.file.Path> collection,
                                                             java.nio.file.Path parent,
                                                             boolean sort,
                                                             java.util.Comparator<? super java.nio.file.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.
      • requireExists

        private static java.nio.file.Path requireExists​(java.nio.file.Path file,
                                                        java.lang.String fileParamName,
                                                        java.nio.file.LinkOption... options)
        Requires that the given File exists and throws an IllegalArgumentException if it doesn't.
        Parameters:
        file - The File to check.
        fileParamName - The parameter name to use in the exception message in case of null input.
        options - options indicating how to handle symbolic links.
        Returns:
        the given file.
        Throws:
        java.lang.NullPointerException - if the given File is null.
        java.lang.IllegalArgumentException - if the given File does not exist.
      • setDosReadOnly

        private static boolean setDosReadOnly​(java.nio.file.Path path,
                                              boolean readOnly,
                                              java.nio.file.LinkOption... linkOptions)
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • setLastModifiedTime

        public static void setLastModifiedTime​(java.nio.file.Path sourceFile,
                                               java.nio.file.Path targetFile)
                                        throws java.io.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:
        java.lang.NullPointerException - if sourceFile is null.
        java.lang.NullPointerException - if targetFile is null.
        java.io.IOException - if setting the last-modified time failed.
        Since:
        2.12.0
      • setPosixDeletePermissions

        private static boolean setPosixDeletePermissions​(java.nio.file.Path parent,
                                                         boolean enableDeleteChildren,
                                                         java.nio.file.LinkOption... linkOptions)
                                                  throws java.io.IOException
        To delete a file in POSIX, you need Write and Execute permissions on its parent directory.
        Parameters:
        parent - The parent path for a file element to delete which needs RW permissions.
        enableDeleteChildren - true to set permissions to delete.
        linkOptions - options indicating how handle symbolic links.
        Returns:
        true if the operation was attempted and succeeded, false if parent is null.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • setPosixPermissions

        private static boolean setPosixPermissions​(java.nio.file.Path path,
                                                   boolean addPermissions,
                                                   java.util.List<java.nio.file.attribute.PosixFilePermission> updatePermissions,
                                                   java.nio.file.LinkOption... linkOptions)
                                            throws java.io.IOException
        Low-level POSIX permission operation to set permissions.
        Parameters:
        path - Set this path's permissions.
        addPermissions - true to add, false to remove.
        updatePermissions - the List of PosixFilePermission to add or remove.
        linkOptions - options indicating how handle symbolic links.
        Returns:
        true if the operation was attempted and succeeded, false if parent is null.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • setPosixReadOnlyFile

        private static void setPosixReadOnlyFile​(java.nio.file.Path path,
                                                 boolean readOnly,
                                                 java.nio.file.LinkOption... linkOptions)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • setReadOnly

        public static java.nio.file.Path setReadOnly​(java.nio.file.Path path,
                                                     boolean readOnly,
                                                     java.nio.file.LinkOption... linkOptions)
                                              throws java.io.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:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.8.0
      • sizeOf

        public static long sizeOf​(java.nio.file.Path path)
                           throws java.io.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:
        java.lang.NullPointerException - if the file is null.
        java.lang.IllegalArgumentException - if the file does not exist.
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • sizeOfAsBigInteger

        public static java.math.BigInteger sizeOfAsBigInteger​(java.nio.file.Path path)
                                                       throws java.io.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:
        java.lang.NullPointerException - if the file is null.
        java.lang.IllegalArgumentException - if the file does not exist.
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • sizeOfDirectory

        public static long sizeOfDirectory​(java.nio.file.Path directory)
                                    throws java.io.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:
        java.lang.NullPointerException - if the directory is null.
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • sizeOfDirectoryAsBigInteger

        public static java.math.BigInteger sizeOfDirectoryAsBigInteger​(java.nio.file.Path directory)
                                                                throws java.io.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:
        java.lang.NullPointerException - if the directory is null.
        java.io.IOException - if an I/O error occurs.
        Since:
        2.12.0
      • toFileVisitOptionSet

        static java.util.Set<java.nio.file.FileVisitOption> toFileVisitOptionSet​(java.nio.file.FileVisitOption... fileVisitOptions)
        Converts an array of FileVisitOption to a Set.
        Parameters:
        fileVisitOptions - input array.
        Returns:
        a new Set.
      • touch

        public static java.nio.file.Path touch​(java.nio.file.Path file)
                                        throws java.io.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:
        java.lang.NullPointerException - if the parameter is null.
        java.io.IOException - if setting the last-modified time failed or an I/O problem occurs.\
        Since:
        2.12.0
      • visitFileTree

        public static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>> T visitFileTree​(T visitor,
                                                                                                        java.nio.file.Path directory)
                                                                                                 throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
        java.lang.NullPointerException - if the directory is null.
      • visitFileTree

        public static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>> T visitFileTree​(T visitor,
                                                                                                        java.nio.file.Path start,
                                                                                                        java.util.Set<java.nio.file.FileVisitOption> options,
                                                                                                        int maxDepth)
                                                                                                 throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • visitFileTree

        public static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>> T visitFileTree​(T visitor,
                                                                                                        java.lang.String first,
                                                                                                        java.lang.String... more)
                                                                                                 throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • visitFileTree

        public static <T extends java.nio.file.FileVisitor<? super java.nio.file.Path>> T visitFileTree​(T visitor,
                                                                                                        java.net.URI uri)
                                                                                                 throws java.io.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:
        java.io.IOException - if an I/O error is thrown by a visitor method.
      • waitFor

        public static boolean waitFor​(java.nio.file.Path file,
                                      java.time.Duration timeout,
                                      java.nio.file.LinkOption... options)
        Waits for the file system to propagate a file creation, 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:
        java.lang.NullPointerException - if the file is null.
        Since:
        2.12.0
      • walk

        public static java.util.stream.Stream<java.nio.file.Path> walk​(java.nio.file.Path start,
                                                                       PathFilter pathFilter,
                                                                       int maxDepth,
                                                                       boolean readAttributes,
                                                                       java.nio.file.FileVisitOption... options)
                                                                throws java.io.IOException
        Returns a stream of filtered paths.
        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:
        java.io.IOException - if an I/O error is thrown when accessing the starting file.
        Since:
        2.9.0
      • withPosixFileAttributes

        private static <R> R withPosixFileAttributes​(java.nio.file.Path path,
                                                     java.nio.file.LinkOption[] linkOptions,
                                                     boolean overrideReadOnly,
                                                     IOFunction<java.nio.file.attribute.PosixFileAttributes,​R> function)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • writeString

        public static java.nio.file.Path writeString​(java.nio.file.Path path,
                                                     java.lang.CharSequence charSequence,
                                                     java.nio.charset.Charset charset,
                                                     java.nio.file.OpenOption... openOptions)
                                              throws java.io.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:
        java.io.IOException - if an I/O error occurs writing to or creating the file.
        java.lang.NullPointerException - if either path or charSequence is null.
        Since:
        2.12.0