Early Preview

This is currently very much a preview. Please feel free to try things out, but don't be upset if anything is not yet working. Feedback is welcome over on our GitHub Dicussions page.

class System.​IO.​BufferedStream

Assembly: System.Runtime

Inheritance: object → MarshalByRefObjectStream → BufferedStream

Implemented Interfaces

Adds a buffering layer to read and write operations on another stream. This class cannot be inherited.

Properties

public int
BufferSize
Gets the buffer size in bytes for this buffered stream.
public bool
CanRead
Gets a value indicating whether the current stream supports reading.
public bool
CanSeek
Gets a value indicating whether the current stream supports seeking.
public bool
CanWrite
Gets a value indicating whether the current stream supports writing.
public long
Length
Gets the stream length in bytes.
public long
Position
Gets the position within the current stream.
public Stream
UnderlyingStream
Gets the underlying <see cref="T:System.IO.Stream" /> instance for this buffered stream.
public bool
CanTimeout
Gets a value that determines whether the current stream can time out.
public int
ReadTimeout
Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.
public int
WriteTimeout
Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

Methods

public IAsyncResult
BeginRead​(byte[] buffer, int offset, int count, AsyncCallback? callback, object state)
Begins an asynchronous read operation. (Consider using <see cref="M:System.IO.BufferedStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)" /> instead.)
Returns An object that represents the asynchronous read, which could still be pending.
buffer The buffer to read the data into.
offset The byte offset in <paramref name="buffer" /> at which to begin writing data read from the stream.
count The maximum number of bytes to read.
callback An optional asynchronous callback, to be called when the read is complete.
state A user-provided object that distinguishes this particular asynchronous read request from other requests.
public IAsyncResult
BeginWrite​(byte[] buffer, int offset, int count, AsyncCallback? callback, object state)
Begins an asynchronous write operation. (Consider using <see cref="M:System.IO.BufferedStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)" /> instead.)
Returns An object that references the asynchronous write, which could still be pending.
buffer The buffer containing data to write to the current stream.
offset The zero-based byte offset in <paramref name="buffer" /> at which to begin copying bytes to the current stream.
count The maximum number of bytes to write.
callback The method to be called when the asynchronous write operation is completed.
state A user-provided object that distinguishes this particular asynchronous write request from other requests.
public void
CopyTo​(Stream destination, int bufferSize)
Reads the bytes from the current buffered stream and writes them to another stream.
destination The stream to which the contents of the current buffered stream will be copied.
bufferSize The size of the buffer. This value must be greater than zero. The default size is 81920.
CopyToAsync​(Stream destination, int bufferSize, Threading.​CancellationToken cancellationToken)
Asynchronously reads the bytes from the current buffered stream and writes them to another stream, using a specified buffer size and cancellation token.
Returns A task that represents the asynchronous copy operation.
destination The stream to which the contents of the current buffered stream will be copied.
bufferSize The size, in bytes, of the buffer. This value must be greater than zero. The default sizer is 81920.
cancellationToken The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" /> .
protected void
Dispose​(bool disposing)
DisposeAsync​()
Asynchronously releases the unmanaged resources used by the buffered stream.
Returns A task that represents the asynchronous dispose operation.
public int
EndRead​(IAsyncResult asyncResult)
Waits for the pending asynchronous read operation to complete. (Consider using <see cref="M:System.IO.BufferedStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)" /> instead.)
Returns The number of bytes read from the stream, between 0 (zero) and the number of bytes you requested. Streams only return 0 only at the end of the stream, otherwise, they should block until at least 1 byte is available.
asyncResult The reference to the pending asynchronous request to wait for.
public void
EndWrite​(IAsyncResult asyncResult)
Ends an asynchronous write operation and blocks until the I/O operation is complete. (Consider using <see cref="M:System.IO.BufferedStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)" /> instead.)
asyncResult The pending asynchronous request.
public void
Flush​()
Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
FlushAsync​(Threading.​CancellationToken cancellationToken)
Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.
Returns A task that represents the asynchronous flush operation.
cancellationToken The token to monitor for cancellation requests.
public int
Read​(byte[] buffer, int offset, int count)
Copies bytes from the current buffered stream to an array.
Returns The total number of bytes read into <paramref name="array" /> . This can be less than the number of bytes requested if that many bytes are not currently available, or 0 if the end of the stream has been reached before any data can be read.
offset The byte offset in the buffer at which to begin reading bytes.
count The number of bytes to be read.
public int
Read​(Span<​byte> destination)
Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.
Returns The total number of bytes read into the buffer. This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
destination A region of memory. When this method returns, the contents of this region are replaced by the bytes read from the current source.
ReadAsync​(byte[] buffer, int offset, int count, Threading.​CancellationToken cancellationToken)
Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.
Returns A task that represents the asynchronous read operation. The returned task contains the total number of bytes read into the buffer. The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.
buffer The buffer to write the data into.
offset The byte offset in <paramref name="buffer" /> at which to begin writing data from the stream.
count The maximum number of bytes to read.
cancellationToken The token to monitor for cancellation requests.
ReadAsync​(Memory<​byte> buffer, Threading.​CancellationToken cancellationToken = null)
Asynchronously reads a sequence of bytes from the current buffered stream and advances the position within the buffered stream by the number of bytes read.
Returns A task that represents the asynchronous read operation. The value of its <see cref="P:System.Threading.Tasks.ValueTask`1.Result" /> property contains the total number of bytes read into the buffer. The result value can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or it can be 0 (zero) if the end of the stream has been reached.
buffer The region of memory to write the data into.
cancellationToken The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" /> .
public int
ReadByte​()
Reads a byte from the underlying stream and returns the byte cast to an <see langword="int" /> , or returns -1 if reading from the end of the stream.
Returns The byte cast to an <see langword="int" /> , or -1 if reading from the end of the stream.
public long
Seek​(long offset, SeekOrigin origin)
Sets the position within the current buffered stream.
Returns The new position within the current buffered stream.
offset A byte offset relative to <paramref name="origin" /> .
origin A value of type <see cref="T:System.IO.SeekOrigin" /> indicating the reference point from which to obtain the new position.
public void
SetLength​(long value)
Sets the length of the buffered stream.
value An integer indicating the desired length of the current buffered stream in bytes.
public void
Write​(byte[] buffer, int offset, int count)
Copies bytes to the buffered stream and advances the current position within the buffered stream by the number of bytes written.
offset The offset in the buffer at which to begin copying bytes to the current buffered stream.
count The number of bytes to be written to the current buffered stream.
public void
Write​(ReadOnlySpan<​byte> buffer)
Writes a sequence of bytes to the current buffered stream and advances the current position within this buffered stream by the number of bytes written.
buffer A region of memory. This method copies the contents of this region to the current buffered stream.
WriteAsync​(byte[] buffer, int offset, int count, Threading.​CancellationToken cancellationToken)
Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.
Returns A task that represents the asynchronous write operation.
buffer The buffer to write data from.
offset The zero-based byte offset in <paramref name="buffer" /> from which to begin copying bytes to the stream.
count The maximum number of bytes to write.
cancellationToken The token to monitor for cancellation requests.
WriteAsync​(ReadOnlyMemory<​byte> buffer, Threading.​CancellationToken cancellationToken = null)
Asynchronously writes a sequence of bytes to the current buffered stream, advances the current position within this buffered stream by the number of bytes written, and monitors cancellation requests.
Returns A task that represents the asynchronous write operation.
buffer The region of memory to write data from.
cancellationToken The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" /> .
public void
WriteByte​(byte value)
Writes a byte to the current position in the buffered stream.
value A byte to write to the stream.
public void
Close​()
Inherited from Stream
Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Instead of calling this method, ensure that the stream is properly disposed.
public void
CopyTo​(Stream destination)
Inherited from Stream
Reads the bytes from the current stream and writes them to another stream. Both streams positions are advanced by the number of bytes copied.
destination The stream to which the contents of the current stream will be copied.
CopyToAsync​(Stream destination)
Inherited from Stream
Asynchronously reads the bytes from the current stream and writes them to another stream. Both streams positions are advanced by the number of bytes copied.
Returns A task that represents the asynchronous copy operation.
destination The stream to which the contents of the current stream will be copied.
CopyToAsync​(Stream destination, int bufferSize)
Inherited from Stream
Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size. Both streams positions are advanced by the number of bytes copied.
Returns A task that represents the asynchronous copy operation.
destination The stream to which the contents of the current stream will be copied.
bufferSize The size, in bytes, of the buffer. This value must be greater than zero. The default size is 81920.
CopyToAsync​(Stream destination, Threading.​CancellationToken cancellationToken)
Inherited from Stream
Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token. Both streams positions are advanced by the number of bytes copied.
Returns A task that represents the asynchronous copy operation.
destination The stream to which the contents of the current stream will be copied.
cancellationToken The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" /> .
CreateWaitHandle​()
Inherited from Stream
Allocates a <see cref="T:System.Threading.WaitHandle" /> object.
Returns A reference to the allocated <see langword="WaitHandle" /> .
public void
Dispose​()
Inherited from Stream
Releases all resources used by the <see cref="T:System.IO.Stream" /> .
FlushAsync​()
Inherited from Stream
Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.
Returns A task that represents the asynchronous flush operation.
protected void
ObjectInvariant​()
Inherited from Stream
Provides support for a <see cref="T:System.Diagnostics.Contracts.Contract" /> .
ReadAsync​(byte[] buffer, int offset, int count)
Inherited from Stream
Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
Returns A task that represents the asynchronous read operation. The value of the <paramref name="TResult" /> parameter contains the total number of bytes read into the buffer. The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if <paramref name="count" /> is 0 or if the end of the stream has been reached.
buffer The buffer to write the data into.
offset The byte offset in <paramref name="buffer" /> at which to begin writing data from the stream.
count The maximum number of bytes to read.
public int
ReadAtLeast​(Span<​byte> buffer, int minimumBytes, bool throwOnEndOfStream = true)
Inherited from Stream
Reads at least a minimum number of bytes from the current stream and advances the position within the stream by the number of bytes read.
Returns The total number of bytes read into the buffer. This is guaranteed to be greater than or equal to <paramref name="minimumBytes" /> when <paramref name="throwOnEndOfStream" /> is <see langword="true" /> . This will be less than <paramref name="minimumBytes" /> when the end of the stream is reached and <paramref name="throwOnEndOfStream" /> is <see langword="false" /> . This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available.
buffer A region of memory. When this method returns, the contents of this region are replaced by the bytes read from the current stream.
minimumBytes The minimum number of bytes to read into the buffer.
throwOnEndOfStream <see langword="true" /> to throw an exception if the end of the stream is reached before reading <paramref name="minimumBytes" /> of bytes; <see langword="false" /> to return less than <paramref name="minimumBytes" /> when the end of the stream is reached. The default is <see langword="true" /> .
ReadAtLeastAsync​(Memory<​byte> buffer, int minimumBytes, bool throwOnEndOfStream = true, Threading.​CancellationToken cancellationToken = null)
Inherited from Stream
Asynchronously reads at least a minimum number of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.
Returns A task that represents the asynchronous read operation. The value of its <see cref="P:System.Threading.Tasks.ValueTask`1.Result" /> property contains the total number of bytes read into the buffer. This is guaranteed to be greater than or equal to <paramref name="minimumBytes" /> when <paramref name="throwOnEndOfStream" /> is <see langword="true" /> . This will be less than <paramref name="minimumBytes" /> when the end of the stream is reached and <paramref name="throwOnEndOfStream" /> is <see langword="false" /> . This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available.
buffer The region of memory to write the data into.
minimumBytes The minimum number of bytes to read into the buffer.
throwOnEndOfStream <see langword="true" /> to throw an exception if the end of the stream is reached before reading <paramref name="minimumBytes" /> of bytes; <see langword="false" /> to return less than <paramref name="minimumBytes" /> when the end of the stream is reached. The default is <see langword="true" /> .
cancellationToken The token to monitor for cancellation requests.
public void
ReadExactly​(byte[] buffer, int offset, int count)
Inherited from Stream
Reads <paramref name="count" /> number of bytes from the current stream and advances the position within the stream.
buffer An array of bytes. When this method returns, the buffer contains the specified byte array with the values between <paramref name="offset" /> and ( <paramref name="offset" /> + <paramref name="count" /> - 1) replaced by the bytes read from the current stream.
offset The byte offset in <paramref name="buffer" /> at which to begin storing the data read from the current stream.
count The number of bytes to be read from the current stream.
public void
ReadExactly​(Span<​byte> buffer)
Inherited from Stream
Reads bytes from the current stream and advances the position within the stream until the <paramref name="buffer" /> is filled.
buffer A region of memory. When this method returns, the contents of this region are replaced by the bytes read from the current stream.
ReadExactlyAsync​(byte[] buffer, int offset, int count, Threading.​CancellationToken cancellationToken = null)
Inherited from Stream
Asynchronously reads <paramref name="count" /> number of bytes from the current stream, advances the position within the stream, and monitors cancellation requests.
Returns A task that represents the asynchronous read operation.
buffer The buffer to write the data into.
offset The byte offset in <paramref name="buffer" /> at which to begin writing data from the stream.
count The number of bytes to be read from the current stream.
cancellationToken The token to monitor for cancellation requests.
ReadExactlyAsync​(Memory<​byte> buffer, Threading.​CancellationToken cancellationToken = null)
Inherited from Stream
Asynchronously reads bytes from the current stream, advances the position within the stream until the <paramref name="buffer" /> is filled, and monitors cancellation requests.
Returns A task that represents the asynchronous read operation.
buffer The buffer to write the data into.
cancellationToken The token to monitor for cancellation requests.
WriteAsync​(byte[] buffer, int offset, int count)
Inherited from Stream
Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
Returns A task that represents the asynchronous write operation.
buffer The buffer to write data from.
offset The zero-based byte offset in <paramref name="buffer" /> from which to begin copying bytes to the stream.
count The maximum number of bytes to write.
public object
GetLifetimeService​()
Inherited from MarshalByRefObject
Retrieves the current lifetime service object that controls the lifetime policy for this instance.
Returns An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance.
public object
InitializeLifetimeService​()
Inherited from MarshalByRefObject
Obtains a lifetime service object to control the lifetime policy for this instance.
Returns An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the <see cref="P:System.Runtime.Remoting.Lifetime.LifetimeServices.LeaseManagerPollTime" /> property.
protected MarshalByRefObject
MemberwiseClone​(bool cloneIdentity)
Inherited from MarshalByRefObject
Creates a shallow copy of the current <see cref="T:System.MarshalByRefObject" /> object.
Returns A shallow copy of the current <see cref="T:System.MarshalByRefObject" /> object.
cloneIdentity <see langword="false" /> to delete the current <see cref="T:System.MarshalByRefObject" /> object's identity, which will cause the object to be assigned a new identity when it is marshaled across a remoting boundary. A value of <see langword="false" /> is usually appropriate. <see langword="true" /> to copy the current <see cref="T:System.MarshalByRefObject" /> object's identity to its clone, which will cause remoting client calls to be routed to the remote server object.
public bool
Equals​(object obj)
Inherited from object
Determines whether the specified object is equal to the current object.
Returns <see langword="true" /> if the specified object is equal to the current object; otherwise, <see langword="false" /> .
obj The object to compare with the current object.
protected void
Finalize​()
Inherited from object
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
public int
GetHashCode​()
Inherited from object
Serves as the default hash function.
Returns A hash code for the current object.
public Type
GetType​()
Inherited from object
Gets the <see cref="T:System.Type" /> of the current instance.
Returns The exact runtime type of the current instance.
protected object
MemberwiseClone​()
Inherited from object
Creates a shallow copy of the current <see cref="T:System.Object" /> .
Returns A shallow copy of the current <see cref="T:System.Object" /> .
public string
ToString​()
Inherited from object
Returns a string that represents the current object.
Returns A string that represents the current object.