docs: public static boolean copy(final File src, File dest, final int retryTimes) throws IOException {
          int totalRetry = retryTimes;
  
          if (retryTimes < 1) {
              totalRetry = 1;
          }
  
          int retry = 0;
          while (retry++ < totalRetry) {
              try {
                  copy(src, dest, true);
                  return true;
              } catch (Exception ex) {
                  // 本次等待时间
                  int wait = (int) Math.pow(retry, retry) * timeWait;
                  wait = (wait < timeWait) ? timeWait : wait;
  
                  if (retry == totalRetry) {
                      if (ex instanceof IOException) {
                          throw (IOException) ex;
                      } else {
                          throw new IOException((ex == null) ? "unknow error" : ex.getMessage(), ex);
                      }
                  } else {
                      try {
                          Thread.sleep(wait);
                      } catch (InterruptedException e) {
                          // ignore
                      }
                  }
              }
          }
  
          return false;
      }