docs: public static boolean copy(File pFromFile, File pToFile, boolean pOverWrite) throws IOException {
          // Copy all directory structure
          if (pFromFile.isDirectory()) {
              return copyDir(pFromFile, pToFile, pOverWrite);
          }
  
          // Check if destination is a directory
          if (pToFile.isDirectory()) {
              // Create a new file with same name as from
              pToFile = new File(pToFile, pFromFile.getName());
          }
  
          // Check if file exists, and return false if overWrite is false
          if (!pOverWrite && pToFile.exists()) {
              return false;
          }
  
          InputStream in = null;
          OutputStream out = null;
  
          try {
              // Use buffer size two times byte array, to avoid i/o bottleneck
              in = new FileInputStream(pFromFile);
              out = new FileOutputStream(pToFile);
  
              // Copy from inputStream to outputStream
              copy(in, out);
          }
          //Just pass any IOException on up the stack
          finally {
              close(in);
              close(out);
          }
  
          return true;  // If we got here, everything is probably okay.. ;-)
      }