Read a range of bytes as a non-blocking ScatteringByteChannel
The returned channel will be non-blocking for all read calls. If bytes have not yet
asynchronously been delivered from Google Cloud Storage the method will return rather than
waiting for the bytes to arrive.
The resulting ScatteringByteChannel MUST be close()ed to avoid leaking memory
Instances of this class are immutable and thread safe.
See Also: <xref uid="com.google.cloud.storage.BlobReadSession.<Projection>readAs(com.google.cloud.storage.ReadProjectionConfig<Projection>)" data-throw-if-not-resolved="false">BlobReadSession#readAs(ReadProjectionConfig), ScatteringByteChannel, ReadProjectionConfigs#asChannel()
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class ReadAsChannel (2.55.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.55.0 (latest)](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.ReadAsChannel)\n- [2.54.0](/java/docs/reference/google-cloud-storage/2.54.0/com.google.cloud.storage.ReadAsChannel)\n- [2.53.3](/java/docs/reference/google-cloud-storage/2.53.3/com.google.cloud.storage.ReadAsChannel)\n- [2.52.3](/java/docs/reference/google-cloud-storage/2.52.3/com.google.cloud.storage.ReadAsChannel)\n- [2.50.0](/java/docs/reference/google-cloud-storage/2.50.0/com.google.cloud.storage.ReadAsChannel)\n- [2.49.0](/java/docs/reference/google-cloud-storage/2.49.0/com.google.cloud.storage.ReadAsChannel)\n- [2.48.2](/java/docs/reference/google-cloud-storage/2.48.2/com.google.cloud.storage.ReadAsChannel)\n- [2.47.0](/java/docs/reference/google-cloud-storage/2.47.0/com.google.cloud.storage.ReadAsChannel)\n- [2.46.0](/java/docs/reference/google-cloud-storage/2.46.0/com.google.cloud.storage.ReadAsChannel)\n- [2.45.0](/java/docs/reference/google-cloud-storage/2.45.0/com.google.cloud.storage.ReadAsChannel)\n- [2.44.1](/java/docs/reference/google-cloud-storage/2.44.1/com.google.cloud.storage.ReadAsChannel)\n- [2.43.2](/java/docs/reference/google-cloud-storage/2.43.2/com.google.cloud.storage.ReadAsChannel)\n- [2.42.0](/java/docs/reference/google-cloud-storage/2.42.0/com.google.cloud.storage.ReadAsChannel)\n- [2.41.0](/java/docs/reference/google-cloud-storage/2.41.0/com.google.cloud.storage.ReadAsChannel)\n- [2.40.1](/java/docs/reference/google-cloud-storage/2.40.1/com.google.cloud.storage.ReadAsChannel)\n- [2.39.0](/java/docs/reference/google-cloud-storage/2.39.0/com.google.cloud.storage.ReadAsChannel)\n- [2.38.0](/java/docs/reference/google-cloud-storage/2.38.0/com.google.cloud.storage.ReadAsChannel)\n- [2.37.0](/java/docs/reference/google-cloud-storage/2.37.0/com.google.cloud.storage.ReadAsChannel)\n- [2.36.1](/java/docs/reference/google-cloud-storage/2.36.1/com.google.cloud.storage.ReadAsChannel)\n- [2.34.0](/java/docs/reference/google-cloud-storage/2.34.0/com.google.cloud.storage.ReadAsChannel)\n- [2.33.0](/java/docs/reference/google-cloud-storage/2.33.0/com.google.cloud.storage.ReadAsChannel)\n- [2.32.1](/java/docs/reference/google-cloud-storage/2.32.1/com.google.cloud.storage.ReadAsChannel)\n- [2.30.1](/java/docs/reference/google-cloud-storage/2.30.1/com.google.cloud.storage.ReadAsChannel)\n- [2.29.1](/java/docs/reference/google-cloud-storage/2.29.1/com.google.cloud.storage.ReadAsChannel)\n- [2.28.0](/java/docs/reference/google-cloud-storage/2.28.0/com.google.cloud.storage.ReadAsChannel)\n- [2.27.1](/java/docs/reference/google-cloud-storage/2.27.1/com.google.cloud.storage.ReadAsChannel)\n- [2.24.0](/java/docs/reference/google-cloud-storage/2.24.0/com.google.cloud.storage.ReadAsChannel)\n- [2.23.0](/java/docs/reference/google-cloud-storage/2.23.0/com.google.cloud.storage.ReadAsChannel)\n- [2.22.6](/java/docs/reference/google-cloud-storage/2.22.6/com.google.cloud.storage.ReadAsChannel)\n- [2.21.0](/java/docs/reference/google-cloud-storage/2.21.0/com.google.cloud.storage.ReadAsChannel)\n- [2.20.2](/java/docs/reference/google-cloud-storage/2.20.2/com.google.cloud.storage.ReadAsChannel)\n- [2.19.0](/java/docs/reference/google-cloud-storage/2.19.0/com.google.cloud.storage.ReadAsChannel)\n- [2.18.0](/java/docs/reference/google-cloud-storage/2.18.0/com.google.cloud.storage.ReadAsChannel)\n- [2.17.2](/java/docs/reference/google-cloud-storage/2.17.2/com.google.cloud.storage.ReadAsChannel)\n- [2.16.0](/java/docs/reference/google-cloud-storage/2.16.0/com.google.cloud.storage.ReadAsChannel)\n- [2.15.1](/java/docs/reference/google-cloud-storage/2.15.1/com.google.cloud.storage.ReadAsChannel)\n- [2.14.0](/java/docs/reference/google-cloud-storage/2.14.0/com.google.cloud.storage.ReadAsChannel)\n- [2.13.1](/java/docs/reference/google-cloud-storage/2.13.1/com.google.cloud.storage.ReadAsChannel)\n- [2.12.0](/java/docs/reference/google-cloud-storage/2.12.0/com.google.cloud.storage.ReadAsChannel)\n- [2.11.3](/java/docs/reference/google-cloud-storage/2.11.3/com.google.cloud.storage.ReadAsChannel)\n- [2.10.0](/java/docs/reference/google-cloud-storage/2.10.0/com.google.cloud.storage.ReadAsChannel)\n- [2.9.3](/java/docs/reference/google-cloud-storage/2.9.3/com.google.cloud.storage.ReadAsChannel)\n- [2.8.1](/java/docs/reference/google-cloud-storage/2.8.1/com.google.cloud.storage.ReadAsChannel)\n- [2.7.1](/java/docs/reference/google-cloud-storage/2.7.1/com.google.cloud.storage.ReadAsChannel)\n- [2.6.1](/java/docs/reference/google-cloud-storage/2.6.1/com.google.cloud.storage.ReadAsChannel)\n- [2.5.1](/java/docs/reference/google-cloud-storage/2.5.1/com.google.cloud.storage.ReadAsChannel)\n- [2.4.5](/java/docs/reference/google-cloud-storage/2.4.5/com.google.cloud.storage.ReadAsChannel)\n- [2.3.0](/java/docs/reference/google-cloud-storage/2.3.0/com.google.cloud.storage.ReadAsChannel)\n- [2.2.3](/java/docs/reference/google-cloud-storage/2.2.3/com.google.cloud.storage.ReadAsChannel)\n- [2.1.10](/java/docs/reference/google-cloud-storage/2.1.10/com.google.cloud.storage.ReadAsChannel) \n| **Beta**\n|\n|\n| This library is covered by the [Pre-GA Offerings Terms](/terms/service-terms#1)\n| of the Terms of Service. Pre-GA libraries might have limited support,\n| and changes to pre-GA libraries might not be compatible with other pre-GA versions.\n| For more information, see the\n[launch stage descriptions](/products#product-launch-stages). \n\n public final class ReadAsChannel extends ReadProjectionConfigs.BaseConfig\u003cScatteringByteChannel,BaseObjectReadSessionStreamRead.StreamingRead\u003e\n\nRead a range of `byte`s as a non-blocking ScatteringByteChannel\n\nThe returned channel will be non-blocking for all read calls. If bytes have not yet\nasynchronously been delivered from Google Cloud Storage the method will return rather than\nwaiting for the bytes to arrive.\n\nThe resulting ScatteringByteChannel MUST be close()ed to avoid leaking memory\n\nInstances of this class are immutable and thread safe.\nSee Also: \\\u003cxref uid=\"com.google.cloud.storage.BlobReadSession.\\\u003cProjection\\\u003ereadAs(com.google.cloud.storage.ReadProjectionConfig\\\u003cProjection\\\u003e)\" data-throw-if-not-resolved=\"false\"\\\u003eBlobReadSession#readAs(ReadProjectionConfig), ScatteringByteChannel, [ReadProjectionConfigs#asChannel()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.ReadProjectionConfigs#com_google_cloud_storage_ReadProjectionConfigs_asChannel__) \n\nInheritance\n-----------\n\n[Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e [ReadProjectionConfig\\\u003cProjection\\\u003e](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.ReadProjectionConfig) \\\u003e com.google.cloud.storage.ReadProjectionConfigs.BaseConfig \\\u003e ReadAsChannel \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nMethods\n-------\n\n### equals(Object o)\n\n public boolean equals(Object o)\n\n**Overrides** \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-)\n\n### getRange()\n\n public RangeSpec getRange()\n\n| **Beta**\n|\n| This feature is covered by the [Pre-GA Offerings Terms](/terms/service-terms#1) of the Terms of Service. Pre-GA libraries might have limited support, and changes to pre-GA libraries might not be compatible with other pre-GA versions. For more information, see the launch stage descriptions.\n\nThe [RangeSpec](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.RangeSpec) to be used for any read using this instance.\n\n*Default:* [RangeSpec#all()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.RangeSpec#com_google_cloud_storage_RangeSpec_all__)\n\n### hashCode()\n\n public int hashCode()\n\n**Overrides** \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--)\n\n### toString()\n\n public String toString()\n\n**Overrides** \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--)\n\n### withRangeSpec(RangeSpec range)\n\n public ReadAsChannel withRangeSpec(RangeSpec range)\n\n| **Beta**\n|\n| This feature is covered by the [Pre-GA Offerings Terms](/terms/service-terms#1) of the Terms of Service. Pre-GA libraries might have limited support, and changes to pre-GA libraries might not be compatible with other pre-GA versions. For more information, see the launch stage descriptions.\n\nReturn an instance with the [RangeSpec](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.RangeSpec) set to the specified value.\n\n*Default:* [RangeSpec#all()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.RangeSpec#com_google_cloud_storage_RangeSpec_all__)\nSee Also: [#getRange()](/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.ReadAsChannel#com_google_cloud_storage_ReadAsChannel_getRange__)"]]