code: public static boolean copy(FileSystem srcFS, Path[] srcs, 
        FileSystem dstFS, Path dst,
        boolean deleteSource, 
        boolean overwrite, boolean validate,
        Configuration conf,
        IOThrottler throttler)
        throws IOException {
      boolean gotException = false;
      boolean returnVal = true;
      StringBuffer exceptions = new StringBuffer();
  
      if (srcs.length == 1)
        return copy(srcFS, srcs[0], dstFS, dst, deleteSource, overwrite, 
            validate, conf, throttler);
  
      // Check if dest is directory
      if (!dstFS.exists(dst)) {
        throw new IOException("`" + dst +"': specified destination directory " +
                              "doest not exist");
      } else {
        FileStatus sdst = dstFS.getFileStatus(dst);
        if (!sdst.isDir())
          throw new IOException("copying multiple files, but last argument `" +
                                dst + "' is not a directory");
      }
  
      for (Path src : srcs) {
        try {
          if (!copy(srcFS, src, dstFS, dst, deleteSource, overwrite, 
              validate, conf, throttler))
            returnVal = false;
        } catch (IOException e) {
          gotException = true;
          exceptions.append(e.getMessage());
          exceptions.append("\n");
        }
      }
      if (gotException) {
        throw new IOException(exceptions.toString());
      }
      return returnVal;
    }
docs: copy a list of files from a source file system to a directory dst
  in a destination file system
  
  @param srcFS source file system
  @param srcs a list of source files
  @param dstFS destination file system
  @param dst destination directory
  @param deleteSource if source should be deleted
  @param overwrite if destination should be overwritten
  @param validate if destination file should be validated
  @param conf configuration
  @param throttler IOThrottler for copy
  @return true if copy succeeds
  @throws IOException if error occurs