public class ResettableInputStream extends ReleasableInputStream
ResettableInputStream allows the close operation to be disabled via
ReleasableInputStream.disableClose() (to avoid accidentally being closed). This is necessary when such input
stream needs to be marked-and-reset multiple times but only as long as the stream has not been
closed.
The creator of this input stream should therefore always call ReleasableInputStream.release() in a finally
block to truly release the underlying resources.
Releasablein| 构造器和说明 |
|---|
ResettableInputStream(File file) |
ResettableInputStream(FileInputStream fis) |
| 限定符和类型 | 方法和说明 |
|---|---|
int |
available() |
File |
getFile()
Returns the underlying file, if known; or null if not;
|
void |
mark(int _)
Marks the current position in this input stream.
|
boolean |
markSupported() |
static ResettableInputStream |
newResettableInputStream(File file)
Convenient factory method to construct a new resettable input stream for the given file,
converting any IOException into CosClientException.
|
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 CosClientException.
|
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 CosClientException with the given error message.
|
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 CosClientException with the given error message.
|
int |
read() |
int |
read(byte[] arg0,
int arg1,
int arg2) |
void |
reset()
Repositions this stream to the position at the time the
mark method was last
called on this input stream. |
long |
skip(long n) |
close, disableClose, isCloseDisabled, release, wrapabort, abortIfNeeded, isAbortedreadpublic ResettableInputStream(File file) throws IOException
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.
IOExceptionpublic ResettableInputStream(FileInputStream fis) throws IOException
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.
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.
IOExceptionpublic final boolean markSupported()
markSupported 在类中 SdkFilterInputStreampublic void mark(int _)
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.
mark 在类中 SdkFilterInputStream_ - ignoredpublic void reset()
throws IOException
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.
reset 在类中 SdkFilterInputStreamIOExceptionpublic int available()
throws IOException
available 在类中 SdkFilterInputStreamIOExceptionpublic int read()
throws IOException
read 在类中 SdkFilterInputStreamIOExceptionpublic long skip(long n)
throws IOException
skip 在类中 SdkFilterInputStreamIOExceptionpublic int read(byte[] arg0,
int arg1,
int arg2)
throws IOException
read 在类中 SdkFilterInputStreamIOExceptionpublic File getFile()
public static ResettableInputStream newResettableInputStream(File 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.
public static ResettableInputStream newResettableInputStream(File file, String errmsg)
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.
public static ResettableInputStream newResettableInputStream(FileInputStream fis)
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.
public static ResettableInputStream newResettableInputStream(FileInputStream fis, String errmsg)
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.
Copyright © 2022. All rights reserved.