code: public static void copy(File source, File target) throws IOException {
          if (!source.exists()) {
              throw new FileNotFoundException("Source file not found:" + source.getAbsolutePath());
          }
  
          if (!target.exists() && !target.getParentFile().exists() && !target.getParentFile().mkdirs()) {
              throw new IOException("Can't create target directory:" + target.getParentFile().getAbsolutePath());
          }
          if (source.isDirectory()) {
              target.mkdirs();
              File[] files = source.listFiles();
              if (files != null) {
                  for (File child : files) {
                      copy(child, new File(target, child.getName()));
                  }
              }
          } else {
              FileInputStream is = new FileInputStream(source);
              FileOutputStream os = new FileOutputStream(target);
              io.fabric8.utils.Files.copy(is, os);
          }
      }
docs: Copy the source {@link File} to the target {@link File}.
  
  // TODO DELETEME when fabric8-utils released with this method