Class ResettableInputStream

    • Constructor Detail

      • ResettableInputStream

        public ResettableInputStream​(File file)
                              throws IOException
        Parameters:
        file - must not be null. Upon successful construction the the file will be opened with an input stream automatically marked at the starting position of the given file.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

        Throws:
        IOException
      • ResettableInputStream

        public ResettableInputStream​(FileInputStream fis)
                              throws IOException

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

        Parameters:
        fis - file input stream; must not be null. Upon successful construction the input stream will be automatically marked at the current position of the given file input stream.
        Throws:
        IOException
    • Method Detail

      • newResettableInputStream

        public static ResettableInputStream newResettableInputStream​(File file)
        Convenient factory method to construct a new resettable input stream for the given file, converting any IOException into SdkClientException.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

      • newResettableInputStream

        public static ResettableInputStream newResettableInputStream​(File file,
                                                                     String errmsg)
        Convenient factory method to construct a new resettable input stream for the given file, converting any IOException into SdkClientException with the given error message.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

      • newResettableInputStream

        public static ResettableInputStream newResettableInputStream​(FileInputStream fis)
        Convenient factory method to construct a new resettable input stream for the given file input stream, converting any IOException into SdkClientException.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

      • newResettableInputStream

        public static ResettableInputStream newResettableInputStream​(FileInputStream fis,
                                                                     String errmsg)
        Convenient factory method to construct a new resettable input stream for the given file input stream, converting any IOException into SdkClientException with the given error message.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

      • mark

        public void mark​(int ignored)
        Marks the current position in this input stream. A subsequent call to the reset method repositions this stream at the last marked position so that subsequent reads re-read the same bytes. This method works as long as the underlying file has not been closed.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

        Overrides:
        mark in class SdkFilterInputStream
        Parameters:
        ignored - ignored
      • reset

        public void reset()
                   throws IOException
        Repositions this stream to the position at the time the mark method was last called on this input stream. This method works as long as the underlying file has not been closed.

        Note the creation of a 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 ReleasableInputStream.disableClose(), so that the release method becomes the only way to truly close the opened file.

        Overrides:
        reset in class SdkFilterInputStream
        Throws:
        IOException
      • getFile

        public File getFile()
        Returns the underlying file, if known; or null if not;