# Reader&lt;TInput&gt;.ReadOwnedBuffer(int)

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.reader-1/) | [Methods](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.reader-1/methods/)

[Source](https://github.com/dotnet/orleans/blob/997f2589e814db85c6a451b59c081c88e50b8944/src/Orleans.Serialization/Buffers/Reader.cs#L508-L530)

```csharp
public ArcBuffer ReadOwnedBuffer(int length)
```

Reads bytes into an independently owned [ArcBuffer](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.arcbuffer/).

### Parameters

- `length` (`int`): The number of bytes to read.

### Returns

An owned buffer which the caller must dispose, or [ArcBuffer](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.arcbuffer/) for a zero-length read.

### Exceptions

- `System.ArgumentOutOfRangeException`: `length` is negative.
- `System.IndexOutOfRangeException`: The input contains fewer than `length` unread bytes.
