-
- All Superinterfaces:
- AutoCloseable, ByteChannel, Channel, Closeable, ReadableByteChannel, WritableByteChannel
- All Known Implementing Classes:
- FileChannel
public interface SeekableByteChannel extends ByteChannel
A byte channel that maintains a current position and allows the position to be changed.A seekable byte channel is connected to an entity, typically a file, that contains a variable-length sequence of bytes that can be read and written. The current position can be
queried
andmodified
. The channel also provides access to the current size of the entity to which the channel is connected. The size increases when bytes are written beyond its current size; the size decreases when it istruncated
.The
position
andtruncate
methods which do not otherwise have a value to return are specified to return the channel upon which they are invoked. This allows method invocations to be chained. Implementations of this interface should specialize the return type so that method invocations on the implementation class can be chained.
-
-
Method Summary
Methods Modifier and Type Method and Description long
position()
Returns this channel's position.SeekableByteChannel
position(long newPosition)
Sets this channel's position.int
read(ByteBuffer dst)
Reads a sequence of bytes from this channel into the given buffer.long
size()
Returns the current size of entity to which this channel is connected.SeekableByteChannel
truncate(long size)
Truncates the entity, to which this channel is connected, to the given size.int
write(ByteBuffer src)
Writes a sequence of bytes to this channel from the given buffer.
-
-
-
Method Detail
-
read
int read(ByteBuffer dst) throws IOException
Reads a sequence of bytes from this channel into the given buffer.Bytes are read starting at this channel's current position, and then the position is updated with the number of bytes actually read. Otherwise this method behaves exactly as specified in the
ReadableByteChannel
interface.- Specified by:
read
in interfaceReadableByteChannel
- Parameters:
dst
- The buffer into which bytes are to be transferred- Returns:
- The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
- Throws:
ClosedChannelException
- If this channel is closedAsynchronousCloseException
- If another thread closes this channel while the read operation is in progressClosedByInterruptException
- If another thread interrupts the current thread while the read operation is in progress, thereby closing the channel and setting the current thread's interrupt statusIOException
- If some other I/O error occurs
-
write
int write(ByteBuffer src) throws IOException
Writes a sequence of bytes to this channel from the given buffer.Bytes are written starting at this channel's current position, unless the channel is connected to an entity such as a file that is opened with the
APPEND
option, in which case the position is first advanced to the end. The entity to which the channel is connected is grown, if necessary, to accommodate the written bytes, and then the position is updated with the number of bytes actually written. Otherwise this method behaves exactly as specified by theWritableByteChannel
interface.- Specified by:
write
in interfaceWritableByteChannel
- Parameters:
src
- The buffer from which bytes are to be retrieved- Returns:
- The number of bytes written, possibly zero
- Throws:
ClosedChannelException
- If this channel is closedAsynchronousCloseException
- If another thread closes this channel while the write operation is in progressClosedByInterruptException
- If another thread interrupts the current thread while the write operation is in progress, thereby closing the channel and setting the current thread's interrupt statusIOException
- If some other I/O error occurs
-
position
long position() throws IOException
Returns this channel's position.- Returns:
- This channel's position, a non-negative integer counting the number of bytes from the beginning of the entity to the current position
- Throws:
ClosedChannelException
- If this channel is closedIOException
- If some other I/O error occurs
-
position
SeekableByteChannel position(long newPosition) throws IOException
Sets this channel's position.Setting the position to a value that is greater than the current size is legal but does not change the size of the entity. A later attempt to read bytes at such a position will immediately return an end-of-file indication. A later attempt to write bytes at such a position will cause the entity to grow to accommodate the new bytes; the values of any bytes between the previous end-of-file and the newly-written bytes are unspecified.
Setting the channel's position is not recommended when connected to an entity, typically a file, that is opened with the
APPEND
option. When opened for append, the position is first advanced to the end before writing.- Parameters:
newPosition
- The new position, a non-negative integer counting the number of bytes from the beginning of the entity- Returns:
- This channel
- Throws:
ClosedChannelException
- If this channel is closedIllegalArgumentException
- If the new position is negativeIOException
- If some other I/O error occurs
-
size
long size() throws IOException
Returns the current size of entity to which this channel is connected.- Returns:
- The current size, measured in bytes
- Throws:
ClosedChannelException
- If this channel is closedIOException
- If some other I/O error occurs
-
truncate
SeekableByteChannel truncate(long size) throws IOException
Truncates the entity, to which this channel is connected, to the given size.If the given size is less than the current size then the entity is truncated, discarding any bytes beyond the new end. If the given size is greater than or equal to the current size then the entity is not modified. In either case, if the current position is greater than the given size then it is set to that size.
An implementation of this interface may prohibit truncation when connected to an entity, typically a file, opened with the
APPEND
option.- Parameters:
size
- The new size, a non-negative byte count- Returns:
- This channel
- Throws:
NonWritableChannelException
- If this channel was not opened for writingClosedChannelException
- If this channel is closedIllegalArgumentException
- If the new size is negativeIOException
- If some other I/O error occurs
-
-
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 11/06/2005, zuletzt geändert 04/03/2020
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/java-api-rf-java/nio/channels/seekablebytechannel.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.