Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pelajari cara mengembangkan aplikasi Java yang menggunakan Azure Files untuk menyimpan data. Azure Files adalah layanan berbagi file terkelola di cloud. Ini menyediakan berbagi file yang dikelola sepenuhnya yang dapat diakses melalui protokol Server Message Block (SMB) dan Network File System (NFS) standar industri. Azure Files juga menyediakan REST API untuk akses terprogram ke berbagi file.
Dalam artikel ini, Anda mempelajari tentang berbagai pendekatan untuk dikembangkan dengan Azure Files di Java, dan cara memilih pendekatan yang paling sesuai dengan kebutuhan aplikasi Anda. Anda juga mempelajari cara membuat aplikasi konsol dasar yang berinteraksi dengan sumber daya Azure Files.
Berlaku untuk
| Model manajemen | Model tagihan | Peringkat media | Pemborosan | SMB | NFS |
|---|---|---|---|---|---|
| Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Lokal (LRS) |
|
|
| Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Zona (ZRS) |
|
|
| Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Geo (GRS) |
|
|
| Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | GeoZone (GZRS) |
|
|
| Microsoft.Storage | Versi 1 yang telah disediakan | SSD (kelas atas) | Lokal (LRS) |
|
|
| Microsoft.Storage | Versi 1 yang telah disediakan | SSD (kelas atas) | Zona (ZRS) |
|
|
| Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Lokal (LRS) |
|
|
| Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Zona (ZRS) |
|
|
| Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Geo (GRS) |
|
|
| Microsoft.Storage | Bayar per penggunaan | HDD (standar) | GeoZone (GZRS) |
|
|
Tentang pengembangan aplikasi Java dengan Azure Files
Azure Files menawarkan beberapa cara bagi pengembang Java untuk mengakses data dan mengelola sumber daya di Azure Files. Tabel berikut mencantumkan pendekatan, meringkas cara kerjanya, dan memberikan panduan tentang kapan menggunakan setiap pendekatan:
| Pendekatan | Cara kerjanya | Kapan harus menggunakan |
|---|---|---|
| Pustaka I/O file yang standar | Menggunakan panggilan API tingkat OS melalui berbagi file Azure yang dipasang menggunakan SMB atau NFS. Saat memasang berbagi file menggunakan SMB/NFS, Anda dapat menggunakan pustaka I/O file untuk bahasa pemrograman atau kerangka kerja, seperti java.io dan java.nio untuk Java. |
Anda memiliki aplikasi lini bisnis dengan kode yang sudah ada yang menggunakan I/O file standar, dan Anda tidak ingin menulis ulang kode agar aplikasi berfungsi dengan berbagi file Azure. |
| FileREST API | Langsung memanggil titik akhir HTTPS untuk berinteraksi dengan data yang disimpan di Azure Files. Menyediakan kontrol terprogram atas sumber daya berbagi file. Azure SDK menyediakan pustaka klien Berbagi File (com.azure.storage.file.share) yang dibangun di FileREST API, memungkinkan Anda berinteraksi dengan operasi FileREST API melalui paradigma bahasa pemrograman Java yang sudah dikenal. |
Anda membangun layanan dan aplikasi cloud bernilai tambah untuk pelanggan dan Anda ingin menggunakan fitur lanjutan yang tidak tersedia melalui pustaka I/O file standar. |
| Penyedia sumber daya penyimpanan REST API | Menggunakan Azure Resource Manager (ARM) untuk mengelola akun penyimpanan dan berbagi file. Memanggil titik akhir REST API untuk berbagai operasi manajemen sumber daya. | Aplikasi atau layanan Anda perlu melakukan tugas manajemen sumber daya, seperti membuat, menghapus, atau memperbarui akun penyimpanan atau berbagi file. |
Untuk informasi umum tentang pendekatan ini, lihat Gambaran umum pengembangan aplikasi dengan Azure Files.
Artikel ini berfokus pada bekerja dengan sumber daya Azure Files menggunakan pendekatan berikut:
- Bekerja dengan Azure Files menggunakan pustaka I/O file Java: Memasang berbagi file data menggunakan SMB atau NFS dan menggunakan pustaka I/O file Java untuk bekerja dengan file dan direktori dalam file share tersebut.
- Bekerja dengan Azure Files menggunakan pustaka klien Berbagi File untuk Java: Gunakan pustaka klien Azure Storage File Shares untuk Java untuk bekerja dengan file dan direktori dalam berbagi file. Pustaka klien ini dibangun pada FileREST API.
- Mengelola sumber daya Azure Files menggunakan pustaka manajemen Azure Storage: Gunakan pustaka manajemen Azure Storage untuk mengelola berbagi file dan sumber daya lain di akun penyimpanan Anda. Pustaka manajemen dibangun di REST API penyedia sumber daya Azure Storage.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Java Development Kit (JDK) versi 8 atau yang lebih baru
- Apache Maven digunakan untuk manajemen proyek dalam contoh ini
Atur lingkungan Anda
Nota
Artikel ini menggunakan alat build Maven untuk membangun dan menjalankan kode sampel. Alat build lainnya, seperti Gradle, juga bekerja dengan Azure SDK untuk Java.
Gunakan Maven untuk membuat aplikasi konsol baru, atau buka proyek yang sudah ada. Ikuti langkah-langkah ini untuk menginstal paket dan menambahkan arahan yang diperlukan import .
Memasang paket
Buka file pom.xml di editor teks Anda. Menginstal paket dengan menyertakan file BOM, atau menggunakan dependensi langsung.
Sertakan file BOM
Tambahkan azure-sdk-bom untuk menambah ketergantungan pada versi terbaru pustaka. Dalam cuplikan berikut, ganti tempat {bom_version_to_target} dengan nomor versi. Menggunakan azure-sdk-bom membuat Anda tidak perlu menentukan versi setiap dependensi individu. Untuk mempelajari selengkapnya tentang BOM, lihat AZURE SDK BOM README.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Tambahkan elemen dependensi berikut ke grup dependensi. Dependensi azure-identity diperlukan untuk koneksi tanpa kata sandi ke layanan Azure. Perhatikan bahwa artefak resource manager tidak disertakan dalam file BOM, jadi Anda perlu menambahkannya sebagai dependensi langsung.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-file-share</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-management</artifactId>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-storage</artifactId>
<version>{package_version_to_target}</version>
</dependency>
Menyertakan ketergantungan langsung
Untuk mengambil dependensi pada versi pustaka tertentu, tambahkan dependensi langsung ke proyek Anda:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-file-share</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-storage</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-management</artifactId>
<version>{package_version_to_target}</version>
</dependency>
Sertakan direktif impor
Kemudian buka file kode Anda dan tambahkan direktif import yang diperlukan. Dalam contoh ini, kami menambahkan arahan berikut dalam file App.java :
import com.azure.identity.*;
import com.azure.storage.file.share.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.models.*;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
Jika Anda berencana menggunakan pustaka I/O file Java, Anda juga perlu menambahkan direktif impor berikut:
import java.io.*;
import java.nio.file.*;
Bekerja dengan Azure Files menggunakan pustaka I/O file Java
Pustaka I/O file standar adalah cara paling umum untuk mengakses dan bekerja dengan sumber daya Azure Files. Saat Anda memasang berkas menggunakan SMB atau NFS, sistem operasi Anda mengarahkan ulang permintaan API untuk sistem berkas lokal. Pendekatan ini memungkinkan Anda menggunakan pustaka I/O file standar, seperti java.io dan java.nio, untuk berinteraksi dengan file dan direktori dalam berbagi.
Pertimbangkan untuk menggunakan pustaka I/O file Java saat aplikasi Anda memerlukan:
- Kompatibilitas aplikasi: Ideal untuk aplikasi lini bisnis dengan kode yang sudah ada yang sudah menggunakan pustaka I/O file Java. Anda tidak perlu menulis ulang kode agar aplikasi berfungsi dengan berbagi file Azure.
- Kemudahan penggunaan: Pustaka I/O file Java terkenal oleh pengembang dan mudah digunakan. Proposisi nilai kunci Azure Files adalah mengekspos API sistem file asli melalui SMB dan NFS.
Di bagian ini, Anda mempelajari cara menggunakan pustaka I/O file Java untuk bekerja dengan sumber daya Azure Files.
Untuk informasi dan contoh selengkapnya, lihat sumber daya berikut ini:
Memasang berbagi file
Untuk menggunakan pustaka I/O file Java, Anda harus memasang berbagi file terlebih dahulu. Lihat sumber daya berikut untuk panduan tentang cara memasang berbagi file menggunakan SMB atau NFS:
- Memasang berbagi file SMB di Windows
- Memasang sambungan file SMB di Linux
- Memasang berbagi file NFS di Linux
Dalam artikel ini, kami menggunakan jalur berikut untuk merujuk ke berbagi file SMB yang dipasang di Windows:
String fileSharePath = "Z:\\file-share";
Contoh: Menyambungkan ke berbagi file dan menghitung direktori menggunakan pustaka I/O file Java
Contoh kode berikut menunjukkan cara menyambungkan ke berkas bersama dan mencantumkan direktori dalam berkas bersama tersebut.
import java.io.*;
import java.nio.file.*;
// Add the following code to a new or existing function
String fileSharePath = "Z:\\file-share";
try {
File directory = new File(fileSharePath);
File[] dirs = directory.listFiles(File::isDirectory);
if (dirs != null) {
for (File dir : dirs) {
System.out.println(dir.getName());
}
System.out.println(dirs.length + " directories found.");
}
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
Contoh: Menulis ke file dalam share file menggunakan perpustakaan I/O file Java
Contoh kode berikut menunjukkan cara menulis dan menambahkan teks ke file:
import java.io.*;
import java.nio.file.*;
import java.util.Arrays;
// Add the following code to a new or existing function
String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";
try {
String textToWrite = "First line" + System.lineSeparator();
Path filePath = Paths.get(fileSharePath, fileName);
// Write initial content to file
Files.write(filePath, textToWrite.getBytes());
System.out.println("Initial text written to file");
// Append additional lines to the file
String[] textToAppend = { "Second line", "Third line" };
Files.write(filePath,
Arrays.asList(textToAppend),
StandardOpenOption.APPEND);
System.out.println("Additional lines appended to file");
} catch (IOException ex) {
System.out.println("Error writing to file: " + ex.getMessage());
}
Contoh: Mengunci file dalam berbagi file menggunakan pustaka I/O file Java
Klien SMB yang memasang berbagi file dapat menggunakan mekanisme penguncian sistem file untuk mengelola akses ke file bersama.
Contoh kode berikut menunjukkan cara mengunci file dalam berbagi file:
import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.file.*;
// Add the following code to a new or existing function
String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";
String filePath = Paths.get(fileSharePath, fileName).toString();
try (
FileOutputStream fos = new FileOutputStream(filePath);
FileChannel fileChannel = fos.getChannel()) {
// Acquire an exclusive lock on this file
FileLock lock = fileChannel.lock();
System.out.println("File is locked.");
// Perform file operations here
// Release the lock
lock.release();
System.out.println("File lock released.");
} catch (Exception e) {
e.printStackTrace();
}
Saat menggunakan SMB dan FileREST API, perlu diingat bahwa FileREST API menggunakan sewa untuk mengelola kunci file, sementara SMB menggunakan kunci sistem file yang dikelola oleh sistem operasi. Untuk mempelajari selengkapnya tentang mengelola interaksi penguncian file antara SMB dan FileREST API, lihat Mengelola kunci file.
Contoh: Menghitung ACL file menggunakan pustaka I/O file Java
Contoh kode berikut menunjukkan cara menghitung daftar kontrol akses (ACL) untuk file:
import java.nio.file.*;
import java.nio.file.attribute.AclEntry;
import java.nio.file.attribute.AclFileAttributeView;
import java.util.List;
// Add the following code to a new or existing function
String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";
String filePath = Paths.get(fileSharePath, fileName).toString();
try {
Path path = Paths.get(filePath);
// Get the ACL view for the file
AclFileAttributeView aclView = Files.getFileAttributeView(
path, AclFileAttributeView.class);
// Get the ACL entries
List<AclEntry> aclEntries = aclView.getAcl();
// List all access rules for the file
for (AclEntry entry : aclEntries) {
System.out.println("Identity: " + entry.principal().getName());
System.out.println("Access Control Type: " + entry.type());
System.out.println("File System Rights: " + entry.permissions());
System.out.println();
}
System.out.println(aclEntries.size() + " ACL entries found.");
} catch (Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
Bekerja dengan Azure Files menggunakan pustaka klien Berbagi File untuk Java
FileREST API menyediakan akses terprogram ke Azure Files. Ini memungkinkan Anda untuk memanggil titik akhir HTTPS untuk melakukan operasi pada berbagi file, direktori, dan file. FileREST API dirancang untuk skalabilitas tinggi dan fitur canggih yang mungkin tidak tersedia melalui protokol asli. Azure SDK menyediakan pustaka klien, seperti pustaka klien Berbagi File untuk Java, yang dibangun di FileREST API.
Pertimbangkan untuk menggunakan FileREST API dan pustaka klien Berbagi File jika aplikasi Anda memerlukan:
- Fitur tingkat lanjut: Mengakses operasi dan fitur yang tidak tersedia melalui protokol asli.
- Integrasi cloud kustom: Bangun layanan bernilai tambah kustom, seperti pencadangan, antivirus, atau manajemen data, yang berinteraksi langsung dengan Azure Files.
- Pengoptimalan performa: Manfaatkan keunggulan performa dalam skenario skala tinggi menggunakan operasi data plane.
FileREST API memodelkan Azure Files sebagai hierarki sumber daya, dan direkomendasikan untuk operasi yang dilakukan di tingkat direktori atau file . Anda harus lebih memilih PENYEDIA sumber daya Penyimpanan REST API untuk operasi yang dilakukan di tingkat layanan file atau berbagi file .
Di bagian ini, Anda mempelajari cara menggunakan pustaka klien Berbagi File untuk Java agar berfungsi dengan sumber daya Azure Files.
Untuk informasi dan contoh selengkapnya, lihat sumber daya berikut ini:
Mengotorisasi akses dan membuat klien
Untuk menyambungkan aplikasi ke Azure Files, buat ShareClient objek. Objek ini adalah titik awal Anda untuk bekerja dengan sumber daya Azure Files. Contoh kode berikut menunjukkan cara membuat ShareClient objek menggunakan mekanisme otorisasi yang berbeda.
Untuk mengotorisasi dengan ID Microsoft Entra, Anda harus menggunakan prinsip keamanan. Jenis prinsip keamanan mana yang Anda butuhkan tergantung pada tempat aplikasi Anda berjalan. Untuk mempelajari selengkapnya tentang skenario autentikasi, lihat Autentikasi Azure dengan Java dan Azure Identity.
Untuk bekerja dengan contoh kode dalam artikel ini, tetapkan peran bawaan Azure RBAC Storage File Data Privileged Contributor ke prinsipal keamanan. Peran ini menyediakan akses baca, tulis, ubah ACL, dan hapus penuh pada semua data dalam berbagi untuk semua akun penyimpanan yang dikonfigurasi terlepas dari izin NTFS tingkat file/direktori yang ditetapkan. Untuk informasi selengkapnya, lihat Mengakses berbagi file Azure menggunakan ID Microsoft Entra dengan Azure Files OAuth melalui REST.
Mengotorisasi akses menggunakan DefaultAzureCredential
Cara mudah dan aman untuk mengotorisasi akses dan menyambungkan ke Azure Files adalah dengan mendapatkan token OAuth dengan membuat instans DefaultAzureCredential . Anda kemudian dapat menggunakan kredensial tersebut untuk membuat ShareClient objek.
Contoh berikut membuat objek ShareClient yang diotorisasi menggunakan DefaultAzureCredential, lalu membuat objek ShareDirectoryClient untuk mengerjakan direktori dalam membagikan:
import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;
// Add the following code to a new or existing function
String accountName = "<account-name>";
String shareName = "<share-name>";
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
// Create the ShareClient
ShareClient shareClient = new ShareClientBuilder()
.endpoint(String.format("https://%s.file.core.windows.net", accountName))
.shareName(shareName)
.credential(defaultAzureCredential)
.buildClient();
// Create a client to interact with a directory in the share
ShareDirectoryClient directoryClient = shareClient.getDirectoryClient("sample-directory");
Jika Anda mengetahui dengan tepat jenis kredensial mana yang Anda gunakan untuk mengautentikasi pengguna, Anda bisa mendapatkan token OAuth dengan menggunakan kelas lain di pustaka klien Azure Identity untuk Java. Kelas-kelas ini berasal dari kelas TokenCredential .
Untuk mempelajari selengkapnya tentang masing-masing mekanisme otorisasi ini, lihat Memilih cara mengotorisasi akses ke data file.
Contoh: Menyalin file menggunakan pustaka klien Berbagi File
Anda dapat menyalin file dalam berbagi file atau di antara berbagi file dengan menggunakan metode berikut:
Anda dapat menyalin file ke blob tujuan dengan menggunakan metode berikut dari BlockBlobClient objek:
Contoh kode berikut menunjukkan cara menyalin file ke file di berbagi file lain:
import java.time.*;
import java.util.*;
import com.azure.core.credential.TokenCredential;
import com.azure.core.util.polling.*;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;
// Add the following code to a new or existing function
String accountName = "<account-name>";
String srcShareName = "src-file-share";
String destShareName = "dest-file-share";
String srcFilePath = "src/path/to/file";
String destFilePath = "dest/path/to/file";
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
ShareFileClient srcShareFileClient = new ShareFileClientBuilder()
.endpoint(String.format("https://%s.file.core.windows.net", accountName))
.shareName(srcShareName)
.shareTokenIntent(ShareTokenIntent.BACKUP)
.resourcePath(srcFilePath)
.credential(defaultAzureCredential)
.buildFileClient();
ShareFileClient destShareFileClient = new ShareFileClientBuilder()
.endpoint(String.format("https://%s.file.core.windows.net", accountName))
.shareName(destShareName)
.shareTokenIntent(ShareTokenIntent.BACKUP)
.resourcePath(destFilePath)
.credential(defaultAzureCredential)
.buildFileClient();
// Copy the file from the source share to the destination share
SyncPoller<ShareFileCopyInfo, Void> poller = destShareFileClient
.beginCopy(srcShareFileClient.getFileUrl(),
Collections.singletonMap("file", "metadata"),
Duration.ofSeconds(2));
final PollResponse<ShareFileCopyInfo> pollResponse = poller.poll();
final ShareFileCopyInfo value = pollResponse.getValue();
System.out.printf("Copy source: %s. Status: %s.%n", value.getCopySourceUrl(), value.getCopyStatus());
Contoh: Menyewa file menggunakan pustaka klien Berbagi File
Perjanjian sewa mengunci file yang dikelola Azure melalui ID sewa. Sewa menyediakan mekanisme untuk mengoordinasikan akses ke file di beberapa klien dalam sistem terdistribusi. Hak sewa pada file menyediakan akses tulis dan hapus yang eksklusif. Untuk mempelajari selengkapnya tentang status dan tindakan sewa, lihat File Sewa.
Contoh kode berikut menunjukkan cara membuat klien sewa, memperoleh sewa durasi tak terbatas pada file, dan merilis sewa:
import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;
import com.azure.storage.file.share.specialized.*;
// Add the following code to a new or existing function
String accountName = "<account-name>";
String shareName = "sample-file-share";
String filePath = "path/to/file";
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
ShareFileClient fileClient = new ShareFileClientBuilder()
.endpoint(String.format("https://%s.file.core.windows.net", accountName))
.shareName(shareName)
.shareTokenIntent(ShareTokenIntent.BACKUP)
.resourcePath(filePath)
.credential(defaultAzureCredential)
.buildFileClient();
// Get a ShareLeaseClient
ShareLeaseClient fileLeaseClient = new ShareLeaseClientBuilder()
.fileClient(fileClient)
.shareTokenIntent(ShareTokenIntent.BACKUP)
.buildClient();
try {
// Acquire a lease on the file with infinite duration
fileLeaseClient.acquireLease();
System.out.println("Lease acquired successfully");
// Do something with the file
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
} finally {
// Release the lease when finished
try {
fileLeaseClient.releaseLease();
System.out.println("Lease released successfully.");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
Saat menggunakan SMB dan FileREST API, perlu diingat bahwa FileREST API menggunakan sewa untuk mengelola kunci file, sementara SMB menggunakan kunci sistem file yang dikelola oleh sistem operasi. Untuk mempelajari selengkapnya tentang mengelola interaksi penguncian file antara SMB dan FileREST API, lihat Mengelola kunci file.
Contoh: Membuat dan mencantumkan rekam jepret berbagi menggunakan pustaka klien Berbagi File
Cuplikan berbagi adalah salinan berbagi file baca-saja pada saat tertentu. Anda dapat membuat snapshot dari berkas bersama, lalu menggunakan snapshot tersebut untuk mengakses data dalam berkas tersebut pada saat snapshot dibuat. Anda juga dapat mencantumkan semua rekam jepret dalam berbagi file, dan menghapus rekam jepret berbagi.
Contoh kode berikut menunjukkan cara membuat rekam jepret berbagi, mencantumkan rekam jepret dalam berbagi file, dan melintasi pohon direktori dalam rekam jepret berbagi:
import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;
// Add the following code to a new or existing function
public static void main(String[] args) {
String connectionString = "<connection-string>";
// Create a ShareServiceClient from which you can create clients for specific shares
ShareServiceClient shareServiceClient = new ShareServiceClientBuilder()
.connectionString(connectionString)
.buildClient();
// Get a client for a specific share
ShareClient shareClient = shareServiceClient.getShareClient("sample-file-share");
try {
// Create a snapshot
ShareSnapshotInfo snapshotInfo = shareClient.createSnapshot();
System.out.println("Snapshot created: " + snapshotInfo.getSnapshot());
// List snapshots in a share
ListSharesOptions options = new ListSharesOptions()
.setIncludeSnapshots(true);
for (ShareItem shareItem : shareServiceClient.listShares(options, null, null)) {
if (shareItem.getSnapshot() != null) {
System.out.println("Share: " + shareItem.getName() +
" (Snapshot: " + shareItem.getSnapshot() + ")");
}
}
// List directories and files in a share snapshot
String snapshotTimestamp = snapshotInfo.getSnapshot();
ShareClient shareSnapshot = shareClient.getSnapshotClient(snapshotTimestamp);
ShareDirectoryClient rootDir = shareSnapshot.getRootDirectoryClient();
listDirectoryTree(rootDir);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
private static void listDirectoryTree(ShareDirectoryClient directory) {
// List all files and directories in current directory
for (ShareFileItem fileItem : directory.listFilesAndDirectories()) {
if (fileItem.isDirectory()) {
System.out.println("Directory: " + fileItem.getName());
// Recursively list subdirectory contents
listDirectoryTree(directory.getSubdirectoryClient(fileItem.getName()));
} else {
System.out.println("File: " + fileItem.getName());
}
}
}
Nota
Token OAuth, seperti yang diperoleh saat menggunakan DefaultAzureCredential, tidak diizinkan untuk operasi sarana data di tingkat berbagi file. Untuk bekerja dengan rekam jepret berbagi, objek klien harus diotorisasi menggunakan kunci akun. Objek ShareClient yang dibuat dalam contoh kode ini menggunakan string koneksi, yang menyertakan kunci akun.
Menyimpan kunci akun atau string koneksi memberikan risiko keamanan. Anda seharusnya hanya menggunakannya saat autentikasi Microsoft Entra tidak tersedia. Untuk mempelajari selengkapnya tentang menyimpan kunci akun dengan aman di Azure Key Vault, lihat Tentang kunci akun penyimpanan terkelola Azure Key Vault.
Mengelola sumber daya Azure Files menggunakan pustaka manajemen Azure Storage
Pustaka manajemen Azure Storage dibangun di atas REST API penyedia sumber daya Azure Storage. Penyedia sumber daya Azure Storage adalah layanan berdasarkan Azure Resource Manager, dan mendukung metode deklaratif (templat) dan imperatif (panggilan API langsung). REST API penyedia sumber daya Azure Storage menyediakan akses terprogram ke sumber daya Azure Storage, termasuk berbagi file. Azure SDK menyediakan pustaka manajemen yang dibangun di REST API penyedia sumber daya Azure Storage.
Pustaka manajemen direkomendasikan untuk operasi yang dilakukan di layanan file atau tingkat berbagi file . Di bagian ini, Anda mempelajari cara menggunakan pustaka manajemen Azure Storage untuk mengelola sumber daya Azure Files.
Pustaka manajemen Azure Storage dibangun di atas REST API penyedia sumber daya Azure Storage. Penyedia sumber daya Azure Storage adalah layanan berdasarkan Azure Resource Manager, dan mendukung metode deklaratif (templat) dan imperatif (panggilan API langsung). REST API penyedia sumber daya Azure Storage menyediakan akses terprogram ke sumber daya Azure Storage, termasuk berbagi file. Azure SDK menyediakan pustaka manajemen yang dibangun di REST API penyedia sumber daya Azure Storage.
Pustaka manajemen direkomendasikan untuk operasi yang dilakukan di layanan file atau tingkat berbagi file . Di bagian ini, Anda mempelajari cara menggunakan pustaka manajemen Azure Storage untuk mengelola sumber daya Azure Files.
Contoh: Membuat berbagi file menggunakan pustaka manajemen Azure Storage
Contoh kode berikut menunjukkan cara membuat objek tingkat AzureResourceManager atas, mendaftarkan penyedia sumber daya Storage dengan langganan, dan membuat berbagi file menggunakan pustaka manajemen Azure Storage:
import com.azure.identity.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.fluent.*;
import com.azure.resourcemanager.storage.fluent.models.*;
import com.azure.core.credential.TokenCredential;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
// Add the following code to a new or existing function
String subscriptionID = "<subscription-id>";
String rgName = "<resource-group-name>";
String saName = "<storage-account-name>";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager armClient = AzureResourceManager
.configure()
.authenticate(credential, profile)
.withSubscription(subscriptionID);
// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
armClient.providers().register("Microsoft.Storage");
// Create a new file share
StorageManagementClient storageManagementClient = armClient.storageAccounts().manager().serviceClient();
FileSharesClient fileShare = storageManagementClient.getFileShares();
String shareName = "sample-file-share";
int quotaInGB = 1;
// Create the file share
fileShare.create(
rgName,
saName,
shareName,
new FileShareInner()
.withShareQuota(quotaInGB)
);
Anda dapat mengonfigurasi properti berbagi file menggunakan kelas FileShareInner . Contoh sebelumnya menunjukkan cara mengatur kuota berbagi saat membuat berbagi file. Untuk memperbarui file share yang sudah ada, gunakan fileShare.update() dan berikan objek FileShareInner dengan properti yang ingin Anda perbarui.
Nota
Untuk melakukan operasi register, Anda memerlukan izin untuk tindakan Azure RBAC berikut: Microsoft.Storage/register/action. Izin ini disertakan dalam peran bawaan Kontributor dan Pemilik.
Contoh: Mencantumkan berbagi file dan rekam jepret menggunakan pustaka manajemen Azure Storage
Contoh kode berikut menunjukkan cara mencantumkan berbagi file dan rekam jepret di akun penyimpanan:
import com.azure.identity.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.fluent.*;
import com.azure.resourcemanager.storage.fluent.models.*;
import com.azure.core.credential.TokenCredential;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
import com.azure.core.util.Context;
// Add the following code to a new or existing function
String subscriptionID = "<subscription-id>";
String rgName = "<resource-group-name>";
String saName = "<storage-account-name>";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager armClient = AzureResourceManager
.configure()
.authenticate(credential, profile)
.withSubscription(subscriptionID);
// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
armClient.providers().register("Microsoft.Storage");
StorageManagementClient storageManagementClient = armClient.storageAccounts().manager().serviceClient();
FileSharesClient fileShare = storageManagementClient.getFileShares();
// List all file shares and include snapshots
PagedIterable<FileShareItemInner> fileShares = fileShare.list(
rgName, // resource group name
saName, // storage account name
null, // maxpagesize
null, // filter
"snapshots", // expand to include snapshots
Context.NONE); // context
for (FileShareItemInner fileShareItem : fileShares) {
System.out.println("File share name: " + fileShareItem.name());
System.out.println("File share quota: " + fileShareItem.shareQuota());
}
Langkah berikutnya
Untuk informasi selengkapnya tentang mengembangkan dengan Azure Files, lihat sumber daya berikut ini:
- Gambaran umum pengembangan aplikasi dengan Azure Files
- Penamaan dan referensi pembagian, direktori, file, dan metadata
- Mengelola kunci file
- Operasi pada direktori
- Operasi terhadap file