Lompati ke konten utama
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Menggunakan JavaScript SDK di Node.js untuk mengelola direktori dan file di Azure Data Lake Storage Gen2
- Artikel
- 09/27/2022
- 3 menit untuk membaca
Dalam artikel ini
Artikel ini menunjukkan cara menggunakan Node.js untuk membuat dan mengelola direktori dan file di akun penyimpanan yang memiliki namespace hierarkis.
Untuk mempelajari cara mendapatkan, mengatur, dan memperbarui daftar kontrol akses (ACL) direktori dan file, lihat Gunakan JavaScript SDK di Node.js untuk mengelola ACL di Azure Data Lake Storage Gen2.
Paket (Manajer Paket Node) | Sampel | Beri Umpan Balik
Prasyarat
Langganan Azure. Untuk informasi selengkapnya, lihat Dapatkan uji coba gratis Azure.
Akun penyimpanan dengan namespace hierarkis aktif. Ikuti petunjuk berikut untuk membuatnya.
Jika Anda menggunakan paket ini dalam aplikasi Node.js, Anda memerlukan Node.js 8.0.0 atau yang lebih tinggi.
Menyiapkan proyek Anda
Instal pustaka klien Data Lake untuk JavaScript dengan membuka jendela terminal, lalu ketik perintah berikut.
npm install @azure/storage-file-datalakeImpor storage-file-datalake paket dengan menempatkan pernyataan ini di bagian atas file kode Anda.
const { AzureStorageDataLake, DataLakeServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-datalake");Menyambungkan ke akun
Untuk menggunakan cuplikan dalam artikel ini, Anda harus membuat instans DataLakeServiceClient yang mewakili akun penyimpanan.
Sambungkan dengan menggunakan kunci akun
Ini adalah cara termudah untuk menyambungkan ke akun.
Contoh ini membuat instans DataLakeServiceClient dengan menggunakan kunci akun.
function GetDataLakeServiceClient(accountName, accountKey) { const sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey); const datalakeServiceClient = new DataLakeServiceClient( `//${accountName}.dfs.core.windows.net`, sharedKeyCredential); return datalakeServiceClient; }Catatan
Metode otorisasi ini hanya berfungsi untuk aplikasi Node.js. Jika Anda berencana menjalankan kode di browser, Anda bisa mengotorisasi dengan menggunakan Azure Active Directory (Microsoft Azure AD).
Menyambungkan dengan Azure Active Directory (Microsoft Azure AD)
Anda dapat menggunakan pustaka klien identitas Azure untuk JS untuk mengautentikasi aplikasi Anda dengan Microsoft Azure AD.
Contoh ini membuat instance DataLakeServiceClient menggunakan ID klien, rahasia klien, dan ID penyewa. Untuk mendapatkan nilai ini, lihat Memperoleh token dari Microsoft Azure AD untuk mengotorisasi permintaan dari aplikasi klien.
function GetDataLakeServiceClientAD(accountName, clientID, clientSecret, tenantID) { const credential = new ClientSecretCredential(tenantID, clientID, clientSecret); const datalakeServiceClient = new DataLakeServiceClient( `//${accountName}.dfs.core.windows.net`, credential); return datalakeServiceClient; }Membuat kontainer
Kontainer bertindak sebagai sistem file untuk file Anda. Anda dapat membuatnya dengan mendapatkan instance FileSystemClient, lalu memanggil metode FileSystemClient.Create.
Contoh ini membuat kontainer bernama my-file-system.
async function CreateFileSystem(datalakeServiceClient) { const fileSystemName = "my-file-system"; const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName); const createResponse = await fileSystemClient.create(); }Buat direktori
Buat referensi direktori dengan mendapatkan instance DirectoryClient, lalu panggil metode DirectoryClient.create.
Contoh ini menambahkan direktori bernama my-directory ke kontainer.
async function CreateDirectory(fileSystemClient) { const directoryClient = fileSystemClient.getDirectoryClient("my-directory"); await directoryClient.create(); }Ganti nama atau pindahkan direktori
Ganti nama atau pindahkan direktori dengan memanggil metode DirectoryClient.rename. Berikan jalur direktori yang diinginkan sebuah parameter.
Contoh ini mengganti nama sub-direktori menjadi my-directory-renamed.
Contoh ini memindahkan direktori yang dinamai my-directory-renamed ke sub-direktori bernama my-directory-2.
async function MoveDirectory(fileSystemClient) { const directoryClient = fileSystemClient.getDirectoryClient("my-directory-renamed"); await directoryClient.move("my-directory-2/my-directory-renamed"); }Menghapus direktori
Hapus direktori dengan memanggil metode DirectoryClient.delete.
Contoh ini menghapus direktori bernama my-directory.
async function DeleteDirectory(fileSystemClient) { const directoryClient = fileSystemClient.getDirectoryClient("my-directory"); await directoryClient.delete(); }Unggah file ke direktori
Pertama, baca file. Contoh ini menggunakan modul Node.js fs. Kemudian, buat referensi file di direktori target dengan membuat instance FileClient, lalu panggil metode FileClient.create. Unggah file dengan memanggil metode FileClient.append. Pastikan untuk melengkapi unggahan dengan memanggil metode FileClient.flush.
Contoh ini mengunggah file teks ke direktori bernama my-directory.
async function UploadFile(fileSystemClient) { const fs = require('fs') var content = ""; fs.readFile('mytestfile.txt', (err, data) => { if (err) throw err; content = data.toString(); }) const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt"); await fileClient.create(); await fileClient.append(content, 0, content.length); await fileClient.flush(content.length); }Unduh dari direktori
Pertama, buat instance FileSystemClient yang mewakili file yang ingin Anda unduh. Gunakan metode FileSystemClient.read untuk membaca file. Kemudian, tulis file. Contoh ini menggunakan modul Node.js fs untuk melakukan itu.
async function DownloadFile(fileSystemClient) { const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt"); const downloadResponse = await fileClient.read(); const downloaded = await streamToString(downloadResponse.readableStreamBody); async function streamToString(readableStream) { return new Promise((resolve, reject) => { const chunks = []; readableStream.on("data", (data) => { chunks.push(data.toString()); }); readableStream.on("end", () => { resolve(chunks.join("")); }); readableStream.on("error", reject); }); } const fs = require('fs'); fs.writeFile('mytestfiledownloaded.txt', downloaded, (err) => { if (err) throw err; }); }Daftar isi direktori
Contoh ini, mencetak nama setiap direktori dan file yang terletak di direktori bernama my-directory.
async function ListFilesInDirectory(fileSystemClient) { let i = 1; let iter = await fileSystemClient.listPaths({path: "my-directory", recursive: true}); for await (const path of iter) { console.log(`Path ${i++}: ${path.name}, is directory: ${path.isDirectory}`); } }Lihat juga
- Paket (Manajer Paket Simpul)
- Sampel
- Berikan Umpan Balik