docs: @Override
  	public File copy() throws IORuntimeException{
  		final File src = this.src;
  		final File dest = this.dest;
  		// check
  		Assert.notNull(src, "Source File is null !");
  		if (false == src.exists()) {
  			throw new IORuntimeException("File not exist: " + src);
  		}
  		Assert.notNull(dest, "Destination File or directiory is null !");
  		if (FileUtil.equals(src, dest)) {
  			throw new IORuntimeException("Files '{}' and '{}' are equal", src, dest);
  		}
  
  		if (src.isDirectory()) {// 复制目录
  			if(dest.exists() && false == dest.isDirectory()) {
  				//源为目录，目标为文件，抛出IO异常
  				throw new IORuntimeException("Src is a directory but dest is a file!");
  			}
  			final File subDest = isCopyContentIfDir ? dest : FileUtil.mkdir(FileUtil.file(dest, src.getName()));
  			internalCopyDirContent(src, subDest);
  		} else {// 复制文件
  			internalCopyFile(src, dest);
  		}
  		return dest;
  	}