Class FileCopier

All Implemented Interfaces:
Copier<File>

public class FileCopier extends Duplicate<File,FileCopier>
文件拷贝器 支持以下几种情况: 1、文件复制到文件 2、文件复制到目录 3、目录复制到目录 4、目录下的文件和目录复制到另一个目录
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • FileCopier

      public FileCopier(File src, File dest)
      构造
      Parameters:
      src - 源文件
      dest - 目标文件
  • Method Details

    • create

      public static FileCopier create(String srcPath, String destPath)
      新建一个文件复制器
      Parameters:
      srcPath - 源文件路径(相对ClassPath路径或绝对路径)
      destPath - 目标文件路径(相对ClassPath路径或绝对路径)
      Returns:
      this
    • create

      public static FileCopier create(File src, File dest)
      新建一个文件复制器
      Parameters:
      src - 源文件
      dest - 目标文件
      Returns:
      this
    • isOverride

      public boolean isOverride()
      是否覆盖目标文件
      Returns:
      是否覆盖目标文件
    • setOverride

      public FileCopier setOverride(boolean isOverride)
      设置是否覆盖目标文件
      Parameters:
      isOverride - 是否覆盖目标文件
      Returns:
      this
    • isCopyAttributes

      public boolean isCopyAttributes()
      是否拷贝所有属性
      Returns:
      是否拷贝所有属性
    • setCopyAttributes

      public FileCopier setCopyAttributes(boolean isCopyAttributes)
      设置是否拷贝所有属性
      Parameters:
      isCopyAttributes - 是否拷贝所有属性
      Returns:
      this
    • isCopyContentIfDir

      public boolean isCopyContentIfDir()
      当拷贝来源是目录时是否只拷贝目录下的内容
      Returns:
      当拷贝来源是目录时是否只拷贝目录下的内容
    • setCopyContentIfDir

      public FileCopier setCopyContentIfDir(boolean isCopyContentIfDir)
      当拷贝来源是目录时是否只拷贝目录下的内容
      Parameters:
      isCopyContentIfDir - 是否只拷贝目录下的内容
      Returns:
      this
    • isOnlyCopyFile

      public boolean isOnlyCopyFile()
      当拷贝来源是目录时是否只拷贝文件而忽略子目录
      Returns:
      当拷贝来源是目录时是否只拷贝文件而忽略子目录
    • setOnlyCopyFile

      public FileCopier setOnlyCopyFile(boolean isOnlyCopyFile)
      设置当拷贝来源是目录时是否只拷贝文件而忽略子目录
      Parameters:
      isOnlyCopyFile - 当拷贝来源是目录时是否只拷贝文件而忽略子目录
      Returns:
      the fileCopier
    • copy

      public File copy() throws InstrumentException
      执行拷贝 拷贝规则为:
       1、源为文件,目标为已存在目录,则拷贝到目录下,文件名不变
       2、源为文件,目标为不存在路径,则目标以文件对待(自动创建父级目录)比如:/dest/aaa,如果aaa不存在,则aaa被当作文件名
       3、源为文件,目标是一个已存在的文件,则当setOverride(boolean)设为true时会被覆盖,默认不覆盖
       4、源为目录,目标为已存在目录,当setCopyContentIfDir(boolean)为true时,只拷贝目录中的内容到目标目录中,否则整个源目录连同其目录拷贝到目标目录中
       5、源为目录,目标为不存在路径,则自动创建目标为新目录,然后按照规则4复制
       6、源为目录,目标为文件,抛出IO异常
       7、源路径和目标路径相同时,抛出IO异常
       
      Returns:
      拷贝后目标的文件或目录
      Throws:
      InstrumentException - IO异常