Java v7 用のクライアント ライブラリを使用して BLOB をアップロード、ダウンロード、および一覧表示する方法How to upload, download, and list blobs using the client library for Java v7

この攻略ガイドでは、Java v7 用のクライアント ライブラリを使用して、Azure Blob Storage に対して、コンテナー内のブロック BLOB をアップロード、ダウンロード、および一覧表示する方法について説明します。In this how-to guide, you learn how to use the client library for Java v7 to upload, download, and list block blobs in a container in Azure Blob storage.

ヒント

Java 用の Azure Storage クライアント ライブラリの最新バージョンは v10 です。The latest version of the Azure Storage client library for Java is v10. 可能であれば、クライアント ライブラリの最新バージョンを使用することをお勧めします。Microsoft recommends that you use the latest version of the client library when possible. V10 の使用を開始するには、「クイック スタート: Java Storage SDK V10 を使用して BLOB をアップロード、ダウンロード、および一覧表示する」を参照してください。To get started using v10, see Quickstart: Upload, download, and list blobs by using the Java Storage SDK V10.

前提条件Prerequisites

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

また、Azure portal で Azure ストレージ アカウントを作成します。Also create an Azure storage account in the Azure portal. アカウントの作成については、「ストレージ アカウントの作成」を参照してください。For help creating the account, see Create a storage account.

次の前提条件を満たしていることを確認します。Make sure you have the following prerequisites:

  • Maven が統合された IDE をインストールする。Install an IDE that has Maven integration.

  • または、Maven をインストールして、コマンド ラインから使用するように構成する。Alternatively, install and configure Maven to work from the command line.

このガイドでは、"Eclipse IDE for Java Developers" 構成の Eclipse を使用します。This guide uses Eclipse with the "Eclipse IDE for Java Developers" configuration.

サンプル アプリケーションのダウンロードDownload the sample application

サンプル アプリケーションは基本的なコンソール アプリケーションです。The sample application is a basic console application.

アプリケーションのコピーを開発環境にダウンロードするには、git を使います。Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/storage-blobs-java-quickstart.git

このコマンドは、ローカルの git フォルダーにリポジトリを複製します。This command clones the repository to your local git folder. プロジェクトを開くには、Eclipse を起動し、ウェルカム画面を閉じます。To open the project, launch Eclipse and close the Welcome screen. [File](ファイル) を選択し、[Open Projects from File System](ファイル システムからプロジェクトを開く) を選択します。Select File then Open Projects from File System. [Detect and configure project natures](プロジェクトの特性を検出して構成) チェック ボックスがオンになっていることを確認します。Make sure Detect and configure project natures is checked. [Directory](ディレクトリ) を選択して、複製したリポジトリの保存先に移動します。Select Directory then navigate to where you stored the cloned repository. 複製したリポジトリ内で、blobAzureApp フォルダーを選択します。Inside the cloned repository, select the blobAzureApp folder. Eclipse プロジェクトとして blobAzureApp プロジェクトが表示されることを確認し、[Finish](完了) を選択します。Make sure the blobAzureApp project appears as an Eclipse project, then select Finish.

プロジェクトのインポートが完了したら、(src/main/java 内の blobQuickstart.blobAzureApp に格納されている) AzureApp.java を開き、storageConnectionString 文字列内の accountnameaccountkey を置き換えます。Once the project finishes importing, open AzureApp.java (located in blobQuickstart.blobAzureApp inside of src/main/java), and replace the accountname and accountkey inside of the storageConnectionString string. そのうえでアプリケーションを実行します。Then run the application. これらのタスクを完了するための具体的な手順については、以降のセクションで説明していきます。Specific instructions for completing these tasks are described in the following sections.

Azure Portal で資格情報をコピーするCopy your credentials from the Azure portal

サンプル アプリケーションは、ストレージ アカウントへのアクセスを認証する必要があります。The sample application needs to authenticate access to your storage account. 認証するには、ストレージ アカウントの資格情報を接続文字列としてアプリケーションに追加します。To authenticate, add your storage account credentials to the application as a connection string. 次の手順に従って、ストレージ アカウントの資格情報を表示します。View your storage account credentials by following these steps:

  1. Azure Portal に移動します。Navigate to the Azure portal.

  2. 自分のストレージ アカウントを探します。Locate your storage account.

  3. ストレージ アカウントの概要の [設定] セクションで、[アクセス キー] を選択します。In the Settings section of the storage account overview, select Access keys. ここでは、アカウント アクセス キーと各キーの完全な接続文字列を表示できます。Here, you can view your account access keys and the complete connection string for each key.

  4. [Key1][接続文字列] の値を見つけ、[コピー] ボタンを選択して接続文字列をコピーします。Find the Connection string value under key1, and select the Copy button to copy the connection string. すぐ後の手順で、接続文字列の値を環境変数に追加します。You will add the connection string value to an environment variable in the next step.

    Azure portal から接続文字列をコピーする方法を示すスクリーンショット

ストレージ接続文字列の構成Configure your storage connection string

アプリケーションでは、ストレージ アカウントの接続文字列を指定する必要があります。In the application, you must provide the connection string for your storage account. AzureApp.Java ファイルを開きます。Open the AzureApp.Java file. storageConnectionString 変数を見つけて、前のセクションでコピーした接続文字列値を貼り付けます。Find the storageConnectionString variable and paste the connection string value that you copied in the previous section. storageConnectionString 変数は次のコード例のようになります。Your storageConnectionString variable should look similar to the following code example:

public static final String storageConnectionString =
"DefaultEndpointsProtocol=https;" +
"AccountName=<account-name>;" +
"AccountKey=<account-key>";

サンプルを実行するRun the sample

このサンプル アプリケーションは、既定のディレクトリ (Windows ユーザーの場合は C:\Users<user>\AppData\Local\Temp) にテスト ファイルを作成して Blob Storage にアップロードし、コンテナー内の BLOB の一覧を取得してから、古いファイルと新しいファイルを比較できるように新しい名前でファイルをダウンロードします。This sample application creates a test file in your default directory (C:\Users<user>\AppData\Local\Temp, for Windows users), uploads it to Blob storage, lists the blobs in the container, then downloads the file with a new name so you can compare the old and new files.

コマンド ラインで Maven を使用してサンプルを実行します。Run the sample using Maven at the command line. シェルを開き、複製されたディレクトリ内の blobAzureApp に移動します。Open a shell and navigate to blobAzureApp inside of your cloned directory. 次に「mvn compile exec:java」と入力します。Then enter mvn compile exec:java.

次の例は、アプリケーションを Windows で実行した場合の出力を示しています。The following example shows the output if you were to run the application on Windows.

Azure Blob storage quick start sample
Creating container: quickstartcontainer
Creating a sample file at: C:\Users\<user>\AppData\Local\Temp\sampleFile514658495642546986.txt
Uploading the sample file 
URI of blob is: https://myexamplesacct.blob.core.windows.net/quickstartcontainer/sampleFile514658495642546986.txt
The program has completed successfully.
Press the 'Enter' key while in the console to delete the sample files, example container, and exit the application.

Deleting the container
Deleting the source, and downloaded files

続行する前に、既定のディレクトリ (Windows ユーザーの場合は C:\Users<user>\AppData\Local\Temp) にファイルがあることを確認します。Before you continue, check your default directory (C:\Users<user>\AppData\Local\Temp, for Windows users) for the sample file. コンソール ウィンドウから BLOB の URL をコピーしてブラウザーに貼り付け、Blob Storage のファイルの内容を表示します。Copy the URL for the blob out of the console window and paste it into a browser to view the contents of the file in Blob storage. ディレクトリ内のサンプル ファイルと Blob Storage に格納されているコンテンツを比較すると、これらが同じであることがわかります。If you compare the sample file in your directory with the contents stored in Blob storage, you will see that they are the same.

注意

Azure Storage Explorer などのツールを使って、Blob Storage のファイルを表示することもできます。You can also use a tool such as the Azure Storage Explorer to view the files in Blob storage. Microsoft Azure Storage Explorer は無料のクロスプラットフォーム ツールであり、ストレージ アカウントの情報にアクセスできます。Azure Storage Explorer is a free cross-platform tool that allows you to access your storage account information.

ファイルを確認した後、Enter キーを押してデモを終了し、テスト ファイルを削除します。After you've verified the files, press the Enter key to finish the demo and delete the test files. サンプルの機能がわかったら、AzureApp.java ファイルを開いてコードを確認します。Now that you know what the sample does, open the AzureApp.java file to look at the code.

サンプル コードを理解するUnderstand the sample code

次に、サンプル コードを実行して、そのしくみを理解できるようにします。Next, we walk through the sample code so that you can understand how it works.

ストレージ オブジェクトへの参照を取得するGet references to the storage objects

最初に、Blob Storage にアクセスして管理するために使うオブジェクトへの参照を作成します。The first thing to do is create the references to the objects used to access and manage Blob storage. これらのオブジェクトは、他のオブジェクトを基にして作成されます。各オブジェクトは、一覧で次にあるオブジェクトによって使われます。These objects build on each other -- each is used by the next one in the list.

  • ストレージ アカウントを指す CloudStorageAccount オブジェクトのインスタンスを作成します。Create an instance of the CloudStorageAccount object pointing to the storage account.

    CloudStorageAccount オブジェクトはストレージ アカウントの表現であり、これを使用してストレージ アカウントのプロパティをプログラムで設定してアクセスできます。The CloudStorageAccount object is a representation of your storage account and it allows you to set and access storage account properties programmatically. CloudStorageAccount オブジェクトを使用して、CloudBlobClient インスタンスを作成できます。これは Blob service へのアクセスで必要です。Using the CloudStorageAccount object you can create an instance of the CloudBlobClient, which is necessary to access the blob service.

  • ストレージ アカウントの Blob service を指す CloudBlobClient オブジェクトのインスタンスを作成します。Create an instance of the CloudBlobClient object, which points to the Blob service in your storage account.

    CloudBlobClient は Blob service へのアクセス ポイントを提供し、Blob Storage のプロパティをプログラムで設定してアクセスできるようにします。The CloudBlobClient provides you a point of access to the blob service, allowing you to set and access Blob storage properties programmatically. CloudBlobClient オブジェクトを使用して、CloudBlobContainer インスタンスを作成できます。これはコンテナーを作成するために必要です。Using the CloudBlobClient you can create an instance of the CloudBlobContainer object, which is necessary to create containers.

  • アクセスしているコンテナーを表す CloudBlobContainer オブジェクトのインスタンスを作成します。Create an instance of the CloudBlobContainer object, which represents the container you are accessing. コンテナーは、コンピューターでフォルダーを使ってファイルを整理するのと同じように、BLOB を整理するために使われます。Use containers to organize your blobs like you use folders on your computer to organize your files.

    CloudBlobContainer を作成した後は、関心がある特定の BLOB を指す CloudBlockBlob オブジェクトのインスタンスを作成して、アップロード、ダウンロード、コピー、その他の操作を実行できます。Once you have the CloudBlobContainer, you can create an instance of the CloudBlockBlob object that points to the specific blob you’re interested in, and perform an upload, download, copy, or other operation.

重要

コンテナーの名前は小文字にする必要があります。Container names must be lowercase. コンテナーの詳細については、「Naming and Referencing Containers, Blobs, and Metadata (コンテナー、BLOB、およびメタデータの名前付けと参照)」を参照してください。For more information about containers, see Naming and Referencing Containers, Blobs, and Metadata.

コンテナーを作成するCreate a container

このセクションでは、オブジェクトのインスタンスを作成し、新しいコンテナーを作成した後、BLOB をパブリックにして URL のみでアクセスできるように、コンテナーに対するアクセス許可を設定します。In this section, you create an instance of the objects, create a new container, and then set permissions on the container so the blobs are public and can be accessed with just a URL. コンテナーの名前は quickstartcontainer です。The container is called quickstartcontainer.

この例では、サンプルを実行するたびに新しいコンテナーを作成したいので、CreateIfNotExists を使います。This example uses CreateIfNotExists because we want to create a new container each time the sample is run. アプリケーション全体で同じコンテナーを使用する運用環境では、CreateIfNotExists を 1 回だけ呼び出すことをお勧めします。In a production environment, where you use the same container throughout an application, it's better practice to only call CreateIfNotExists once. または、コードから作成する必要がないように、前もってコンテナーを作成しておいてもかまいません。Alternatively, you can create the container ahead of time so you don't need to create it in the code.

// Parse the connection string and create a blob client to interact with Blob storage
storageAccount = CloudStorageAccount.parse(storageConnectionString);
blobClient = storageAccount.createCloudBlobClient();
container = blobClient.getContainerReference("quickstartcontainer");

// Create the container if it does not exist with public access.
System.out.println("Creating container: " + container.getName());
container.createIfNotExists(BlobContainerPublicAccessType.CONTAINER, new BlobRequestOptions(), new OperationContext());

BLOB をコンテナーにアップロードするUpload blobs to the container

ファイルをブロック BLOB にアップロードするには、ターゲット コンテナーの BLOB に対する参照を取得します。To upload a file to a block blob, get a reference to the blob in the target container. BLOB の参照を取得した後は、CloudBlockBlob.Upload を使ってそれにデータをアップロードできます。Once you have the blob reference, you can upload data to it by using CloudBlockBlob.Upload. この操作により、BLOB がまだ存在しない場合は作成され、既に存在する場合は上書きされます。This operation creates the blob if it doesn't already exist, or overwrites the blob if it already exists.

サンプル コードは、アップロードとダウンロードに使うローカル ファイルを作成し、アップロードするファイルを source として、BLOB の名前を blob に格納します。The sample code creates a local file to be used for the upload and download, storing the file to be uploaded as source and the name of the blob in blob. 次の例では、ファイルを quickstartcontainer という名前のコンテナーにアップロードします。The following example uploads the file to your container called quickstartcontainer.

//Creating a sample file
sourceFile = File.createTempFile("sampleFile", ".txt");
System.out.println("Creating a sample file at: " + sourceFile.toString());
Writer output = new BufferedWriter(new FileWriter(sourceFile));
output.write("Hello Azure!");
output.close();

//Getting a blob reference
CloudBlockBlob blob = container.getBlockBlobReference(sourceFile.getName());

//Creating blob and uploading file to it
System.out.println("Uploading the sample file ");
blob.uploadFromFile(sourceFile.getAbsolutePath());

Blob Storage で使用できる upload メソッドには、uploaduploadBlockuploadFullBlobuploadStandardBlobTieruploadText などがあります。There are several upload methods including upload, uploadBlock, uploadFullBlob, uploadStandardBlobTier, and uploadText which you can use with Blob storage. たとえば、文字列に対しては、Upload メソッドではなく、UploadText メソッドを使用できます。For example, if you have a string, you can use the UploadText method rather than the Upload method.

ブロック BLOB は、あらゆる種類のテキスト ファイルまたはバイナリ ファイルに使うことができます。Block blobs can be any type of text or binary file. ページ BLOB は、主に、IaaS VM のバックアップ用の VHD ファイルに使われます。Page blobs are primarily used for the VHD files that back IaaS VMs. 追加 BLOB は、ファイルに書き込んでからも情報を追加し続ける場合などの、ログ記録に使用します。Use append blobs for logging, such as when you want to write to a file and then keep adding more information. BLOB ストレージに格納されているほとんどのオブジェクトはブロック BLOB です。Most objects stored in Blob storage are block blobs.

コンテナー内の BLOB を一覧表示するList the blobs in a container

コンテナー内のファイルの一覧を取得するには、CloudBlobContainer.ListBlobs を使います。You can get a list of files in the container using CloudBlobContainer.ListBlobs. 次のコードは、BLOB の一覧を取得し、ループ処理して、見つかった BLOB の URI を表示します。The following code retrieves the list of blobs, then loops through them, showing the URIs of the blobs found. コマンド ウィンドウから URI をコピーしてブラウザーに貼り付けることで、ファイルを表示できます。You can copy the URI from the command window and paste it into a browser to view the file.

//Listing contents of container
for (ListBlobItem blobItem : container.listBlobs()) {
    System.out.println("URI of blob is: " + blobItem.getUri());
}

BLOB をダウンロードするDownload blobs

ローカル ディスクに BLOB をダウンロードするには、CloudBlob.DownloadToFile を使います。Download blobs to your local disk using CloudBlob.DownloadToFile.

次のコードは、前のセクションでアップロードした BLOB をダウンロードし、ローカル ディスクで両方のファイルを見ることができるように、BLOB 名に "_DOWNLOADED" というサフィックスを追加します。The following code downloads the blob uploaded in a previous section, adding a suffix of "_DOWNLOADED" to the blob name so you can see both files on local disk.

// Download blob. In most cases, you would have to retrieve the reference
// to cloudBlockBlob here. However, we created that reference earlier, and 
// haven't changed the blob we're interested in, so we can reuse it. 
// Here we are creating a new file to download to. Alternatively you can also pass in the path as a string into downloadToFile method: blob.downloadToFile("/path/to/new/file").
downloadedFile = new File(sourceFile.getParentFile(), "downloadedFile.txt");
blob.downloadToFile(downloadedFile.getAbsolutePath());

リソースのクリーンアップClean up resources

アップロードした BLOB が不要になった場合は、CloudBlobContainer.DeleteIfExists を使ってコンテナー全体を削除できます。If you no longer need the blobs that you have uploaded, you can delete the entire container using CloudBlobContainer.DeleteIfExists. このメソッドで、コンテナー内のファイルも削除されます。This method also deletes the files in the container.

try {
if(container != null)
    container.deleteIfExists();
} catch (StorageException ex) {
System.out.println(String.format("Service error. Http code: %d and error code: %s", ex.getHttpStatusCode(), ex.getErrorCode()));
}

System.out.println("Deleting the source, and downloaded files");

if(downloadedFile != null)
downloadedFile.deleteOnExit();
        
if(sourceFile != null)
sourceFile.deleteOnExit();

次の手順Next steps

この記事では、Java を使ってローカル ディスクと Azure Blob Storage との間でファイルを転送する方法について学習しました。In this article, you learned how to transfer files between a local disk and Azure Blob storage using Java. Java の使用方法の詳細については、GitHub のソース コード リポジトリを参照してください。To learn more about working with Java, continue to our GitHub source code repository.