Java バージョン 8 クライアント ライブラリを使用する Azure ファイル共有のコード サンプル
この記事では、Java 用の Azure ファイル共有クライアント ライブラリのバージョン 8 を使用するコード サンプルを示します。
2023 年 3 月 31 日に、現在の Azure SDK ガイドラインに準拠していない Azure SDK ライブラリのサポートは廃止されました。 新しい Azure SDK ライブラリは、一貫したエクスペリエンスを促進し、セキュリティ態勢を強化するために定期的に更新されます。 新しい機能と重要なセキュリティ更新を利用するために、新しい Azure SDK ライブラリに移行することをお勧めします。
以前のライブラリは 2023 年 3 月 31 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新情報は提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。
前提条件
Azure ファイル共有クライアント ライブラリを使用するには、次の import
ディレクティブを追加します。
// Include the following imports to use Azure Files APIs v11
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.file.*;
Azure ファイル共有へのアクセス
関連記事: Java での Azure Files 用の開発
ストレージ アカウントにアクセスするには、CloudStorageAccount オブジェクトを使用し、接続文字列をその parse メソッドに渡します。
// Use the CloudStorageAccount object to connect to your storage account
try {
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
} catch (InvalidKeyException invalidKey) {
// Handle the exception
}
CloudStorageAccount.parse は InvalidKeyException を投げます。そのため、try/catch ブロック内にそれを配置する必要があります。
ファイル共有を作成する
関連記事: Java での Azure Files 用の開発
Azure Files のすべてのファイルとディレクトリは共有という名前のコンテナーにあります。
共有とそのコンテンツにアクセスするには、Azure Files クライアントを作成します。 次のコード例は、ファイル共有を作成する方法を示しています。
// Create the Azure Files client.
CloudFileClient fileClient = storageAccount.createCloudFileClient();
Azure Files クライアントを使用すると、共有への参照を取得できます。
// Get a reference to the file share
CloudFileShare share = fileClient.getShareReference("sampleshare");
共有を実際に作成するには、CloudFileShare オブジェクトの createIfNotExists メソッドを使用します。
if (share.createIfNotExists()) {
System.out.println("New share created");
}
この時点で、share は「sampleshare」という名前の共有の参照を保持します。
ファイル共有の削除
関連記事: Java での Azure Files 用の開発
次のサンプル コードは、ファイル共有を削除します。
CloudFileShare オブジェクトで deleteIfExists メソッドを呼び出して共有を削除します。
try
{
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
// Create the file client.
CloudFileClient fileClient = storageAccount.createCloudFileClient();
// Get a reference to the file share
CloudFileShare share = fileClient.getShareReference("sampleshare");
if (share.deleteIfExists()) {
System.out.println("sampleshare deleted");
}
} catch (Exception e) {
e.printStackTrace();
}
ディレクトリを作成する
関連記事: Java での Azure Files 用の開発
ルート ディレクトリにすべてのファイルを置くのではなく、サブディレクトリ内に置いてストレージを整理することができます。
次のコードは、ルート ディレクトリの下に sampledir という名前のサブディレクトリを作成します。
//Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
//Get a reference to the sampledir directory
CloudFileDirectory sampleDir = rootDir.getDirectoryReference("sampledir");
if (sampleDir.createIfNotExists()) {
System.out.println("sampledir created");
} else {
System.out.println("sampledir already exists");
}
ディレクトリを削除する
関連記事: Java での Azure Files 用の開発
次のコード例は、ディレクトリを削除する方法を示しています。 ファイルまたはサブディレクトリが残っているディレクトリは削除できません。
// Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
// Get a reference to the directory you want to delete
CloudFileDirectory containerDir = rootDir.getDirectoryReference("sampledir");
// Delete the directory
if ( containerDir.deleteIfExists() ) {
System.out.println("Directory deleted");
}
Azure ファイル共有のファイルとディレクトリを列挙する
関連記事: Java での Azure Files 用の開発
CloudFileDirectory 参照で listFilesAndDirectories を呼び出すと、ファイルとディレクトリの一覧を取得できます。 このメソッドは、繰り返しできる ListFileItem オブジェクトの一覧を返します。
次のコードは、ルート ディレクトリ内のファイルとディレクトリを一覧表示します。
//Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
for ( ListFileItem fileItem : rootDir.listFilesAndDirectories() ) {
System.out.println(fileItem.getUri());
}
ファイルをアップロードする
関連記事: Java での Azure Files 用の開発
共有オブジェクトで getRootDirectoryReference メソッドを呼び出して、ファイルがアップロードされるディレクトリへの参照を取得します。
//Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
共有のルート ディレクトリの参照が与えられたので、次のコードを利用してディレクトリにファイルをアップロードできます。
// Define the path to a local file.
final String filePath = "C:\\temp\\Readme.txt";
CloudFile cloudFile = rootDir.getFileReference("Readme.txt");
cloudFile.uploadFromFile(filePath);
ファイルをダウンロードする
関連記事: Java での Azure Files 用の開発
次の例は、SampleFile.txt をダウンロードし、そのコンテンツを表示します。
//Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
//Get a reference to the directory that contains the file
CloudFileDirectory sampleDir = rootDir.getDirectoryReference("sampledir");
//Get a reference to the file you want to download
CloudFile file = sampleDir.getFileReference("SampleFile.txt");
//Write the contents of the file to the console.
System.out.println(file.downloadText());
ファイルを削除する
関連記事: Java での Azure Files 用の開発
次のコードは「sampledir」という名前のディレクトリ内に保存されている「SampleFile.txt」という名前のファイルを削除します。
// Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.getRootDirectoryReference();
// Get a reference to the directory where the file to be deleted is in
CloudFileDirectory containerDir = rootDir.getDirectoryReference("sampledir");
String filename = "SampleFile.txt"
CloudFile file;
file = containerDir.getFileReference(filename)
if ( file.deleteIfExists() ) {
System.out.println(filename + " was deleted");
}