code: public File getOutputFile(File input) {
          File source;
          File destination;
          if (input.getAbsolutePath().startsWith(getInternalAssetsDirectory().getAbsolutePath())) {
              source = getInternalAssetsDirectory();
              destination = getInternalAssetOutputDirectory();
          } else if (input.getAbsolutePath().startsWith(getExternalAssetsDirectory().getAbsolutePath())) {
              source = getExternalAssetsDirectory();
              destination = getExternalAssetsOutputDirectory();
          } else if (input.getAbsolutePath().startsWith(getInternalAssetOutputDirectory().getAbsolutePath())) {
              return input;
          } else if (input.getAbsolutePath().startsWith(getExternalAssetsOutputDirectory().getAbsolutePath())) {
              return input;
          } else {
              throw new IllegalArgumentException("Cannot determine the output file for " + input.getAbsolutePath() + "," +
                      " the file is not in a resource directory");
          }
          String path = input.getParentFile().getAbsolutePath().substring(source.getAbsolutePath().length());
          return new File(destination, path + File.separator + input.getName());
      }
docs: Gets the output files for the given input file. Unlike {@link #getOutputFile(java.io.File, String)},
  this method does not change the output file's extension. If the file is already in an output directory, the
  file is returned as it is.
  <p>
  This method does not check for the existence of the file, just computes its {@link java.io.File} object.
  
  @param input the input file
  @return the output file