Android で Cloud Storage 参照を作成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ファイルは Cloud Storage バケットに保存されます。このバケット内のファイルは、ローカル ハードディスク上のファイル システムや Firebase Realtime Database 内のデータと同様の階層構造で表されます。アプリからファイルにアクセスするには、そのファイルへの参照を作成します。作成した参照を使うと、データのアップロードやダウンロード、メタデータの取得や更新、ファイルの削除などを行うことができます。参照は特定のファイルまたは階層内の上位ノードをポイントします。
Firebase Realtime Database を使用したことがある場合は、これらのパスになじみがあると思います。ファイルデータの格納場所は Realtime Database ではなく Cloud Storage になります。
参照を作成する
ファイルのアップロード、ダウンロード、削除や、ファイルのメタデータの取得、更新を行うには、参照を作成します。参照はクラウド内のファイルへのポインタと考えることができます。参照は軽量なので、必要なだけいくつでも作成でき、複数のオペレーションで再利用することもできます。
FirebaseStorage
シングルトン インスタンスを使用して getReference()
メソッドを呼び出し、参照を作成します。
Kotlin
// Create a storage reference from our app
var storageRef = storage.reference
Java
// Create a storage reference from our app
StorageReference storageRef = storage.getReference();
次に、既存の参照で child()
メソッドを使用することにより、ツリーの下位("images/space.jpg"
など)への参照を作成できます。
Kotlin
// Create a child reference
// imagesRef now points to "images"
var imagesRef: StorageReference? = storageRef.child("images")
// Child references can also take paths
// spaceRef now points to "images/space.jpg
// imagesRef still points to "images"
var spaceRef = storageRef.child("images/space.jpg")
Java
// Create a child reference
// imagesRef now points to "images"
StorageReference imagesRef = storageRef.child("images");
// Child references can also take paths
// spaceRef now points to "images/space.jpg
// imagesRef still points to "images"
StorageReference spaceRef = storageRef.child("images/space.jpg");
参照を使って階層内を移動する
getParent()
メソッドや getRoot()
メソッドを使用して、ファイル階層を上に移動することもできます。getParent()
は 1 つ上のレベルに移動し、getRoot()
は最上位に移動します。
Kotlin
// parent allows us to move our reference to a parent node
// imagesRef now points to 'images'
imagesRef = spaceRef.parent
// root allows us to move all the way back to the top of our bucket
// rootRef now points to the root
val rootRef = spaceRef.root
Java
// getParent allows us to move our reference to a parent node
// imagesRef now points to 'images'
imagesRef = spaceRef.getParent();
// getRoot allows us to move all the way back to the top of our bucket
// rootRef now points to the root
StorageReference rootRef = spaceRef.getRoot();
child()
、getParent()
、getRoot()
を複数つなげて参照を返すことができます。ただし、getRoot().getParent()
を呼び出すと null
が返されます。
Kotlin
// References can be chained together multiple times
// earthRef points to 'images/earth.jpg'
val earthRef = spaceRef.parent?.child("earth.jpg")
// nullRef is null, since the parent of root is null
val nullRef = spaceRef.root.parent
Java
// References can be chained together multiple times
// earthRef points to 'images/earth.jpg'
StorageReference earthRef = spaceRef.getParent().child("earth.jpg");
// nullRef is null, since the parent of root is null
StorageReference nullRef = spaceRef.getRoot().getParent();
参照のプロパティ
getPath()
、getName()
、getBucket()
メソッドを使用して参照を調べ、参照がポイントしているファイルの詳細を知ることができます。これらのメソッドは、ファイルの完全なパス、名前、バケットを取得します。
Kotlin
// Reference's path is: "images/space.jpg"
// This is analogous to a file path on disk
spaceRef.path
// Reference's name is the last segment of the full path: "space.jpg"
// This is analogous to the file name
spaceRef.name
// Reference's bucket is the name of the storage bucket that the files are stored in
spaceRef.bucket
Java
// Reference's path is: "images/space.jpg"
// This is analogous to a file path on disk
spaceRef.getPath();
// Reference's name is the last segment of the full path: "space.jpg"
// This is analogous to the file name
spaceRef.getName();
// Reference's bucket is the name of the storage bucket that the files are stored in
spaceRef.getBucket();
参照の制約事項
参照のパスと名前には、有効な Unicode 文字を任意の順序で含めることができますが、次のような一定の制約があります。
- UTF-8 でエンコードする場合は、reference.fullPath の全体の長さを 1~1,024 バイトにする必要があります。
- 改行またはラインフィード文字は使用できません。
#
、[
、]
、*
、?
は使用しないでください。これらの文字は、Firebase Realtime Database や gsutil などの他のツールではうまく機能しません。
例
Kotlin
// Points to the root reference
storageRef = storage.reference
// Points to "images"
imagesRef = storageRef.child("images")
// Points to "images/space.jpg"
// Note that you can use variables to create child values
val fileName = "space.jpg"
spaceRef = imagesRef.child(fileName)
// File path is "images/space.jpg"
val path = spaceRef.path
// File name is "space.jpg"
val name = spaceRef.name
// Points to "images"
imagesRef = spaceRef.parent
Java
// Points to the root reference
storageRef = storage.getReference();
// Points to "images"
imagesRef = storageRef.child("images");
// Points to "images/space.jpg"
// Note that you can use variables to create child values
String fileName = "space.jpg";
spaceRef = imagesRef.child(fileName);
// File path is "images/space.jpg"
String path = spaceRef.getPath();
// File name is "space.jpg"
String name = spaceRef.getName();
// Points to "images"
imagesRef = spaceRef.getParent();
次に、Cloud Storage にファイルをアップロードする方法を学習しましょう。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-29 UTC。
[null,null,["最終更新日 2025-08-29 UTC。"],[],[],null,["\u003cbr /\u003e\n\nYour files are stored in a\n[Cloud Storage](//cloud.google.com/storage) bucket. The\nfiles in this bucket are presented in a hierarchical structure, just like the\nfile system on your local hard disk, or the data in the Firebase Realtime Database.\nBy creating a reference to a file, your app gains access to it. These references\ncan then be used to upload or download data, get or update metadata or delete\nthe file. A reference can either point to a specific file or to a higher level\nnode in the hierarchy.\n\nIf you've used the [Firebase Realtime Database](/docs/database), these paths should\nseem very familiar to you. However, your file data is stored in\nCloud Storage, **not** in the Realtime Database.\n\nCreate a Reference\n\nCreate a reference to upload, download, or delete a file,\nor to get or update its metadata. A reference\ncan be thought of as a pointer to a file in the cloud. References are\nlightweight, so you can create as many as you need. They are also reusable for\nmultiple operations.\n\nCreate a reference using the `FirebaseStorage` singleton instance and\ncalling its `getReference()` method. \n\nKotlin \n\n```kotlin\n// Create a storage reference from our app\nvar storageRef = storage.reference \nhttps://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L49-L50\n```\n\nJava \n\n```java\n// Create a storage reference from our app\nStorageReference storageRef = storage.getReference();https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L78-L79\n```\n\nNext, you can create a reference to a location lower in the tree,\nsay `\"images/space.jpg\"` by using the `child()` method on an existing reference. \n\nKotlin \n\n```kotlin\n// Create a child reference\n// imagesRef now points to \"images\"\nvar imagesRef: StorageReference? = storageRef.child(\"images\")\n\n// Child references can also take paths\n// spaceRef now points to \"images/space.jpg\n// imagesRef still points to \"images\"\nvar spaceRef = storageRef.child(\"images/space.jpg\")https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L54-L61\n```\n\nJava \n\n```java\n// Create a child reference\n// imagesRef now points to \"images\"\nStorageReference imagesRef = storageRef.child(\"images\");\n\n// Child references can also take paths\n// spaceRef now points to \"images/space.jpg\n// imagesRef still points to \"images\"\nStorageReference spaceRef = storageRef.child(\"images/space.jpg\");https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L83-L90\n```\n\nNavigate with References\n\nYou can also use the `getParent()` and `getRoot()` methods to navigate up in our\nfile hierarchy. `getParent()` navigates up one level,\nwhile `getRoot()` navigates all the way to the top. \n\nKotlin \n\n```kotlin\n// parent allows us to move our reference to a parent node\n// imagesRef now points to 'images'\nimagesRef = spaceRef.parent\n\n// root allows us to move all the way back to the top of our bucket\n// rootRef now points to the root\nval rootRef = spaceRef.root \nhttps://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L67-L73\n```\n\nJava \n\n```java\n// getParent allows us to move our reference to a parent node\n// imagesRef now points to 'images'\nimagesRef = spaceRef.getParent();\n\n// getRoot allows us to move all the way back to the top of our bucket\n// rootRef now points to the root\nStorageReference rootRef = spaceRef.getRoot();https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L96-L102\n```\n\n`child()`, `getParent()`, and `getRoot()` can be chained together multiple\ntimes, as each returns a reference. But calling `getRoot().getParent()` returns `null`. \n\nKotlin \n\n```kotlin\n// References can be chained together multiple times\n// earthRef points to 'images/earth.jpg'\nval earthRef = spaceRef.parent?.child(\"earth.jpg\")\n\n// nullRef is null, since the parent of root is null\nval nullRef = spaceRef.root.parent \nhttps://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L77-L82\n```\n\nJava \n\n```java\n// References can be chained together multiple times\n// earthRef points to 'images/earth.jpg'\nStorageReference earthRef = spaceRef.getParent().child(\"earth.jpg\");\n\n// nullRef is null, since the parent of root is null\nStorageReference nullRef = spaceRef.getRoot().getParent();https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L106-L111\n```\n\nReference Properties\n\nYou can inspect references to better understand the files they point to\nusing the `getPath()`, `getName()`, and `getBucket()` methods. These methods\nget the file's full path, name and bucket. \n\nKotlin \n\n```kotlin\n// Reference's path is: \"images/space.jpg\"\n// This is analogous to a file path on disk\nspaceRef.path\n\n// Reference's name is the last segment of the full path: \"space.jpg\"\n// This is analogous to the file name\nspaceRef.name\n\n// Reference's bucket is the name of the storage bucket that the files are stored in\nspaceRef.bucket \nhttps://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L88-L97\n```\n\nJava \n\n```java\n// Reference's path is: \"images/space.jpg\"\n// This is analogous to a file path on disk\nspaceRef.getPath();\n\n// Reference's name is the last segment of the full path: \"space.jpg\"\n// This is analogous to the file name\nspaceRef.getName();\n\n// Reference's bucket is the name of the storage bucket that the files are stored in\nspaceRef.getBucket();https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L117-L126\n```\n\nLimitations on References\n\nReference paths and names can contain any sequence of valid Unicode characters,\nbut certain restrictions are imposed including:\n\n1. Total length of reference.fullPath must be between 1 and 1024 bytes when UTF-8 encoded.\n2. No Carriage Return or Line Feed characters.\n3. Avoid using `#`, `[`, `]`, `*`, or `?`, as these do not work well with other tools such as the [Firebase Realtime Database](/docs/database) or [gsutil](https://cloud.google.com/storage/docs/gsutil).\n\nFull Example \n\nKotlin \n\n```kotlin\n// Points to the root reference\nstorageRef = storage.reference\n\n// Points to \"images\"\nimagesRef = storageRef.child(\"images\")\n\n// Points to \"images/space.jpg\"\n// Note that you can use variables to create child values\nval fileName = \"space.jpg\"\nspaceRef = imagesRef.child(fileName)\n\n// File path is \"images/space.jpg\"\nval path = spaceRef.path\n\n// File name is \"space.jpg\"\nval name = spaceRef.name\n\n// Points to \"images\"\nimagesRef = spaceRef.parent \nhttps://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L103-L121\n```\n\nJava \n\n```java\n// Points to the root reference\nstorageRef = storage.getReference();\n\n// Points to \"images\"\nimagesRef = storageRef.child(\"images\");\n\n// Points to \"images/space.jpg\"\n// Note that you can use variables to create child values\nString fileName = \"space.jpg\";\nspaceRef = imagesRef.child(fileName);\n\n// File path is \"images/space.jpg\"\nString path = spaceRef.getPath();\n\n// File name is \"space.jpg\"\nString name = spaceRef.getName();\n\n// Points to \"images\"\nimagesRef = spaceRef.getParent();https://github.com/firebase/snippets-android/blob/cc307b137a106d66a52fa6e9bee6f4f55dab9f76/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L132-L150\n```\n\nNext, let's learn how to\n[upload files](/docs/storage/android/upload-files) to\nCloud Storage."]]