docs: private void internalCopyFile(File src, File dest) throws IORuntimeException {
  		if (null != copyFilter && false == copyFilter.accept(src)) {
  			//被过滤的文件跳过
  			return;
  		}
  		
  		// 如果已经存在目标文件，切为不覆盖模式，跳过之
  		if (dest.exists()) {
  			if(dest.isDirectory()) {
  				//目标为目录，目录下创建同名文件
  				dest = new File(dest, src.getName());
  			}
  			
  			if(dest.exists() && false == isOverride) {
  				//非覆盖模式跳过
  				return;
  			}
  		}else {
  			//路径不存在则创建父目录
  			dest.getParentFile().mkdirs();
  		}
  		
  		final ArrayList<CopyOption> optionList = new ArrayList<>(2);
  		if(isOverride) {
  			optionList.add(StandardCopyOption.REPLACE_EXISTING);
  		}
  		if(isCopyAttributes) {
  			optionList.add(StandardCopyOption.COPY_ATTRIBUTES);
  		}
  		
  		try {
  			Files.copy(src.toPath(), dest.toPath(), optionList.toArray(new CopyOption[optionList.size()]));
  		} catch (IOException e) {
  			throw new IORuntimeException(e);
  		}
  	}