Class CopyDirectoryVisitor

  • All Implemented Interfaces:
    java.nio.file.FileVisitor<java.nio.file.Path>, PathVisitor

    public class CopyDirectoryVisitor
    extends CountingPathVisitor
    Copies a source directory to a target directory.
    Since:
    2.7
    • Constructor Summary

      Constructors 
      Constructor Description
      CopyDirectoryVisitor​(Counters.PathCounters pathCounter, java.nio.file.Path sourceDirectory, java.nio.file.Path targetDirectory, java.nio.file.CopyOption... copyOptions)
      Constructs a new visitor that deletes files except for the files and directories explicitly given.
      CopyDirectoryVisitor​(Counters.PathCounters pathCounter, PathFilter fileFilter, PathFilter dirFilter, java.nio.file.Path sourceDirectory, java.nio.file.Path targetDirectory, java.nio.file.CopyOption... copyOptions)
      Constructs a new visitor that deletes files except for the files and directories explicitly given.
    • Field Detail

      • copyOptions

        private final java.nio.file.CopyOption[] copyOptions
      • sourceDirectory

        private final java.nio.file.Path sourceDirectory
      • targetDirectory

        private final java.nio.file.Path targetDirectory
    • Constructor Detail

      • CopyDirectoryVisitor

        public CopyDirectoryVisitor​(Counters.PathCounters pathCounter,
                                    java.nio.file.Path sourceDirectory,
                                    java.nio.file.Path targetDirectory,
                                    java.nio.file.CopyOption... copyOptions)
        Constructs a new visitor that deletes files except for the files and directories explicitly given.
        Parameters:
        pathCounter - How to count visits.
        sourceDirectory - The source directory
        targetDirectory - The target directory
        copyOptions - Specifies how the copying should be done.
      • CopyDirectoryVisitor

        public CopyDirectoryVisitor​(Counters.PathCounters pathCounter,
                                    PathFilter fileFilter,
                                    PathFilter dirFilter,
                                    java.nio.file.Path sourceDirectory,
                                    java.nio.file.Path targetDirectory,
                                    java.nio.file.CopyOption... copyOptions)
        Constructs a new visitor that deletes files except for the files and directories explicitly given.
        Parameters:
        pathCounter - How to count visits.
        fileFilter - How to filter file paths.
        dirFilter - How to filter directory paths.
        sourceDirectory - The source directory
        targetDirectory - The target directory
        copyOptions - Specifies how the copying should be done.
        Since:
        2.9.0
    • Method Detail

      • copy

        protected void copy​(java.nio.file.Path sourceFile,
                            java.nio.file.Path targetFile)
                     throws java.io.IOException
        Copies the sourceFile to the targetFile.
        Parameters:
        sourceFile - the source file.
        targetFile - the target file.
        Throws:
        java.io.IOException - if an I/O error occurs.
        Since:
        2.8.0
      • getCopyOptions

        public java.nio.file.CopyOption[] getCopyOptions()
        Gets the copy options.
        Returns:
        the copy options.
        Since:
        2.8.0
      • getSourceDirectory

        public java.nio.file.Path getSourceDirectory()
        Gets the source directory.
        Returns:
        the source directory.
        Since:
        2.8.0
      • getTargetDirectory

        public java.nio.file.Path getTargetDirectory()
        Gets the target directory.
        Returns:
        the target directory.
        Since:
        2.8.0
      • preVisitDirectory

        public java.nio.file.FileVisitResult preVisitDirectory​(java.nio.file.Path directory,
                                                               java.nio.file.attribute.BasicFileAttributes attributes)
                                                        throws java.io.IOException
        Specified by:
        preVisitDirectory in interface java.nio.file.FileVisitor<java.nio.file.Path>
        Overrides:
        preVisitDirectory in class CountingPathVisitor
        Throws:
        java.io.IOException
      • resolveRelativeAsString

        private java.nio.file.Path resolveRelativeAsString​(java.nio.file.Path directory)
        Relativizes against sourceDirectory, then resolves against targetDirectory. We have to call Path.toString() relative value because we cannot use paths belonging to different FileSystems in the Path methods, usually this leads to ProviderMismatchException.
        Parameters:
        directory - the directory to relativize.
        Returns:
        a new path, relativized against sourceDirectory, then resolved against targetDirectory.
      • visitFile

        public java.nio.file.FileVisitResult visitFile​(java.nio.file.Path sourceFile,
                                                       java.nio.file.attribute.BasicFileAttributes attributes)
                                                throws java.io.IOException
        Specified by:
        visitFile in interface java.nio.file.FileVisitor<java.nio.file.Path>
        Overrides:
        visitFile in class CountingPathVisitor
        Throws:
        java.io.IOException