Поделиться через


Примеры кода общей папки Azure с помощью клиентских библиотек Java версии 8

В этой статье показаны примеры кода, использующие клиентская библиотека общей папки Azure для Java версии 8.

31 марта 2023 г. мы отставили от поддержки библиотек пакета SDK Azure, которые не соответствуют текущим рекомендациям по пакету SDK Azure. Новые библиотеки azure SDK регулярно обновляются для обеспечения согласованного взаимодействия и укрепления системы безопасности. Рекомендуется перейти на новые библиотеки пакета SDK Azure, чтобы воспользоваться новыми возможностями и критически важными обновлениями безопасности.

Хотя старые библиотеки по-прежнему могут использоваться после 31 марта 2023 г., они больше не будут получать официальную поддержку и обновления от Корпорации Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.

Необходимые компоненты

Чтобы использовать клиентную библиотеку общей папки Azure, добавьте следующие import директивы:

// Include the following imports to use Azure Files APIs v11
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.file.*;

Доступ к общей папке Azure

Связанная статья: разработка для Файлы Azure с помощью Java

Чтобы получить доступ к учетной записи хранения, необходимо использовать объект 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.

Создание общей папки

Связанная статья: разработка для Файлы Azure с помощью Java

Все файлы и каталоги в Файлах Azure сохранены в контейнере, который называется общей папкой.

Чтобы получить доступ к общей папке и ее содержимому, необходимо создать клиент Файлов Azure. В следующем примере кода показано, как создать общую папку:

// Create the Azure Files client.
CloudFileClient fileClient = storageAccount.createCloudFileClient();

С его помощью вы получите ссылку на общую папку.

// Get a reference to the file share
CloudFileShare share = fileClient.getShareReference("sampleshare");

Чтобы создать общую папку, используйте метод createIfNotExists объекта CloudFileShare.

if (share.createIfNotExists()) {
    System.out.println("New share created");
}

На этом этапе объект share содержит ссылку на общую папку с именем sample share.

Удаление общей папки

Связанная статья: разработка для Файлы Azure с помощью Java

В приведенном ниже примере кода удаляется общая папка.

Удалите общую папку, вызвав метод deleteIfExists объекта CloudFileShare.

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();
}

Создание каталога

Связанная статья: разработка для Файлы Azure с помощью Java

Вы можете упорядочить файлы в хранилище, разместив их в подкаталогах, чтобы не захламлять корневой каталог.

Следующий код создает подкаталог с именем 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");
}

Удаление каталога

Связанная статья: разработка для Файлы Azure с помощью Java

В следующем примере кода показано, как удалить каталог. Невозможно удалить каталог, который содержит файлы или подкаталоги.

// 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

Связанная статья: разработка для Файлы Azure с помощью Java

Получите список файлов и каталогов, вызвав listFilesAndDirectories по ссылке CloudFileDirectory. Метод возвращает список объектов 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());
}

Отправка файла

Связанная статья: разработка для Файлы Azure с помощью Java

Получите ссылку на каталог, куда будет отправлен файл, вызвав метод 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);

Скачивание файла

Связанная статья: разработка для Файлы Azure с помощью Java

В следующем примере скачиваются 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());

Удаление файла

Связанная статья: разработка для Файлы Azure с помощью Java

Следующий код удаляет файл с именем SampleFile.txt, хранящийся в каталоге с именем sampledir:

// 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");
}