code: public static ResettableInputStream newResettableInputStream(File file,
              String errmsg) {
          try {
              return new ResettableInputStream(file);
          } catch (IOException e) {
              throw errmsg == null
                  ? new SdkClientException(e)
                  : new SdkClientException(errmsg, e);
          }
      }
docs: Convenient factory method to construct a new resettable input stream for
  the given file, converting any IOException into SdkClientException
  with the given error message.
  <p>
  Note the creation of a {@link ResettableInputStream} would entail
  physically opening a file. If the opened file is meant to be closed only
  (in a finally block) by the very same code block that created it, then it
  is necessary that the release method must not be called while the
  execution is made in other stack frames.
  
  In such case, as other stack frames may inadvertently or indirectly call
  the close method of the stream, the creator of the stream would need to
  explicitly disable the accidental closing via
  {@link ResettableInputStream#disableClose()}, so that the release method
  becomes the only way to truly close the opened file.