docs: public static int copy( File sourceFileOrDirectory,
                              File destinationFileOrDirectory,
                              FilenameFilter exclusionFilter ) throws IOException {
          if (exclusionFilter == null) exclusionFilter = ACCEPT_ALL;
          int numberOfFilesCopied = 0;
          if (sourceFileOrDirectory.isDirectory()) {
              destinationFileOrDirectory.mkdirs();
              String list[] = sourceFileOrDirectory.list(exclusionFilter);
  
              for (int i = 0; i < list.length; i++) {
                  String dest1 = destinationFileOrDirectory.getPath() + File.separator + list[i];
                  String src1 = sourceFileOrDirectory.getPath() + File.separator + list[i];
  
                  numberOfFilesCopied += copy(new File(src1), new File(dest1), exclusionFilter);
              }
          } else {
              try (FileInputStream fis = new FileInputStream(sourceFileOrDirectory);
                   BufferedInputStream bis = new BufferedInputStream(fis);
                   FileOutputStream fos = new FileOutputStream(destinationFileOrDirectory);
                   BufferedOutputStream bos = new BufferedOutputStream(fos)) {
                  int c;
                  while ((c = bis.read()) >= 0) {
                      bos.write(c);
                  }
              }
              numberOfFilesCopied++;
          }
          return numberOfFilesCopied;
      }