A channel for reading data from a Google Cloud object.
Implementations of this class may buffer data internally to reduce remote calls. This
interface implements Restorable to allow saving the reader's state to continue reading
afterwards.
Limit the maximum number of bytes to be read from the objects content, counting from the
beginning of the object, which will be available to read from this channel. If the limit is
larger than the actual size of the content this will have no material impact.
If used in conjunction with #seek(long) the total number of returned bytes from this
channel will be reduced by the number of bytes specified to seek.
Imagine some data [A, B, C, D, E, F, G, H, I, J], 10 bytes total.
limit(5) would produce [A, B, C, D, E]
seek(8) would produce [I, J]
seek(2)limit(5) would produce [C, D, E]
seek(3)limit(3) would produce []
NOTE:Implementers are not required to return a new instance from this method, however
they are allowed to. Users of this method should always use the instance returned from this
method.
Default Implementation:By default, this method will simply return this.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-15 UTC."],[],[],null,["# Interface ReadChannel (2.59.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.59.0 (latest)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.ReadChannel)\n- [2.58.2](/java/docs/reference/google-cloud-core/2.58.2/com.google.cloud.ReadChannel)\n- [2.57.0](/java/docs/reference/google-cloud-core/2.57.0/com.google.cloud.ReadChannel)\n- [2.56.0](/java/docs/reference/google-cloud-core/2.56.0/com.google.cloud.ReadChannel)\n- [2.55.0](/java/docs/reference/google-cloud-core/2.55.0/com.google.cloud.ReadChannel)\n- [2.53.1](/java/docs/reference/google-cloud-core/2.53.1/com.google.cloud.ReadChannel)\n- [2.52.0](/java/docs/reference/google-cloud-core/2.52.0/com.google.cloud.ReadChannel)\n- [2.51.0](/java/docs/reference/google-cloud-core/2.51.0/com.google.cloud.ReadChannel)\n- [2.50.0](/java/docs/reference/google-cloud-core/2.50.0/com.google.cloud.ReadChannel)\n- [2.49.1](/java/docs/reference/google-cloud-core/2.49.1/com.google.cloud.ReadChannel)\n- [2.48.0](/java/docs/reference/google-cloud-core/2.48.0/com.google.cloud.ReadChannel)\n- [2.47.0](/java/docs/reference/google-cloud-core/2.47.0/com.google.cloud.ReadChannel)\n- [2.45.0](/java/docs/reference/google-cloud-core/2.45.0/com.google.cloud.ReadChannel)\n- [2.44.1](/java/docs/reference/google-cloud-core/2.44.1/com.google.cloud.ReadChannel)\n- [2.43.0](/java/docs/reference/google-cloud-core/2.43.0/com.google.cloud.ReadChannel)\n- [2.42.0](/java/docs/reference/google-cloud-core/2.42.0/com.google.cloud.ReadChannel)\n- [2.41.0](/java/docs/reference/google-cloud-core/2.41.0/com.google.cloud.ReadChannel)\n- [2.40.0](/java/docs/reference/google-cloud-core/2.40.0/com.google.cloud.ReadChannel)\n- [2.39.0](/java/docs/reference/google-cloud-core/2.39.0/com.google.cloud.ReadChannel)\n- [2.38.1](/java/docs/reference/google-cloud-core/2.38.1/com.google.cloud.ReadChannel)\n- [2.37.0](/java/docs/reference/google-cloud-core/2.37.0/com.google.cloud.ReadChannel)\n- [2.36.1](/java/docs/reference/google-cloud-core/2.36.1/com.google.cloud.ReadChannel)\n- [2.35.0](/java/docs/reference/google-cloud-core/2.35.0/com.google.cloud.ReadChannel)\n- [2.33.0](/java/docs/reference/google-cloud-core/2.33.0/com.google.cloud.ReadChannel)\n- [2.32.0](/java/docs/reference/google-cloud-core/2.32.0/com.google.cloud.ReadChannel)\n- [2.31.0](/java/docs/reference/google-cloud-core/2.31.0/com.google.cloud.ReadChannel)\n- [2.29.0](/java/docs/reference/google-cloud-core/2.29.0/com.google.cloud.ReadChannel)\n- [2.28.0](/java/docs/reference/google-cloud-core/2.28.0/com.google.cloud.ReadChannel)\n- [2.27.0](/java/docs/reference/google-cloud-core/2.27.0/com.google.cloud.ReadChannel)\n- [2.26.0](/java/docs/reference/google-cloud-core/2.26.0/com.google.cloud.ReadChannel)\n- [2.25.0](/java/docs/reference/google-cloud-core/2.25.0/com.google.cloud.ReadChannel)\n- [2.24.1](/java/docs/reference/google-cloud-core/2.24.1/com.google.cloud.ReadChannel)\n- [2.23.0](/java/docs/reference/google-cloud-core/2.23.0/com.google.cloud.ReadChannel)\n- [2.22.1](/java/docs/reference/google-cloud-core/2.22.1/com.google.cloud.ReadChannel)\n- [2.21.1](/java/docs/reference/google-cloud-core/2.21.1/com.google.cloud.ReadChannel)\n- [2.20.1](/java/docs/reference/google-cloud-core/2.20.1/com.google.cloud.ReadChannel)\n- [2.13.0](/java/docs/reference/google-cloud-core/2.13.0/com.google.cloud.ReadChannel)\n- [2.12.0](/java/docs/reference/google-cloud-core/2.12.0/com.google.cloud.ReadChannel)\n- [2.11.0](/java/docs/reference/google-cloud-core/2.11.0/com.google.cloud.ReadChannel)\n- [2.9.4](/java/docs/reference/google-cloud-core/2.9.4/com.google.cloud.ReadChannel)\n- [2.8.27](/java/docs/reference/google-cloud-core/2.8.27/com.google.cloud.ReadChannel)\n- [2.7.1](/java/docs/reference/google-cloud-core/2.7.1/com.google.cloud.ReadChannel)\n- [2.6.1](/java/docs/reference/google-cloud-core/2.6.1/com.google.cloud.ReadChannel)\n- [2.5.11](/java/docs/reference/google-cloud-core/2.5.11/com.google.cloud.ReadChannel)\n- [2.4.0](/java/docs/reference/google-cloud-core/2.4.0/com.google.cloud.ReadChannel)\n- [2.3.5](/java/docs/reference/google-cloud-core/2.3.5/com.google.cloud.ReadChannel) \n\n public interface ReadChannel extends ReadableByteChannel, Closeable, Restorable\u003cReadChannel\u003e\n\nA channel for reading data from a Google Cloud object.\n\nImplementations of this class may buffer data internally to reduce remote calls. This\ninterface implements [Restorable](/java/docs/reference/google-cloud-core/latest/com.google.cloud.Restorable) to allow saving the reader's state to continue reading\nafterwards. \n\nImplements\n----------\n\n[ReadableByteChannel](https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html), [Closeable](https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html), com.google.cloud.Restorable\\\u003ccom.google.cloud.ReadChannel\\\u003e\n\nMethods\n-------\n\n### capture()\n\n public abstract RestorableState\u003cReadChannel\u003e capture()\n\nCaptures the read channel state so that it can be saved and restored afterwards.\n\n### close()\n\n public abstract void close()\n\nOverridden to remove IOException.\nSee Also: java.nio.channels.Channel#close()\n\n### limit()\n\n public default long limit()\n\nThe currently defined limit for this channel. Initial value is Long#MAX_VALUE\n\n### limit(long limit)\n\n public default ReadChannel limit(long limit)\n\nLimit the maximum number of bytes to be read from the objects content, counting from the\nbeginning of the object, which will be available to read from this channel. If the limit is\nlarger than the actual size of the content this will have no material impact.\n\nIf used in conjunction with [#seek(long)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.ReadChannel#com_google_cloud_ReadChannel_seek_long_) the total number of returned bytes from this\nchannel will be reduced by the number of bytes specified to seek.\n\nThe value provided as `limit` will define a [left-closed,\nright-open](https://en.wikipedia.org/wiki/Interval_(mathematics)#Classification_of_intervals) interval along with either `0` or any value provided to [#seek(long)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.ReadChannel#com_google_cloud_ReadChannel_seek_long_), i.e. `[`[#seek(long)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.ReadChannel#com_google_cloud_ReadChannel_seek_long_)`, `[#limit(long)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.ReadChannel#com_google_cloud_ReadChannel_limit_long_)`)`.\n\n### An example to help illustrate the relationship\n\nImagine some data `[A, B, C, D, E, F, G, H, I, J]`, 10 bytes total.\n\n1. `limit(5)` would produce `[A, B, C, D, E]`\n2. `seek(8)` would produce `[I, J]`\n3. `seek(2)` `limit(5)` would produce `[C, D, E]`\n4. `seek(3)` `limit(3)` would produce `[]`\n\n*NOTE:*Implementers are not required to return a new instance from this method, however\nthey are allowed to. Users of this method should always use the instance returned from this\nmethod.\n\n*Default Implementation:* By default, this method will simply return `this`.\n\n### seek(long position)\n\n public abstract void seek(long position)\n\nSet the offset to read from.\n\n### setChunkSize(int chunkSize)\n\n public abstract void setChunkSize(int chunkSize)\n\nSets the minimum size that will be read by a single RPC. Read data will be locally buffered\nuntil consumed."]]