File system merupakan standard library yang bisa digunakan untuk memanipulasi file system.
Terdapat 3 jenis library dalam File System, yakni:
- Library yang bersifat blocking atau synchronous
- Library yang bersifat non-blocking atau asynchronous menggunakan callback
- Library yang bersifat non-blocking atau asynchronous tapi menggunakan promise
Untuk dokumentasi lebih lanjut dapat di lihat disini
Author sendiri menyarankan menggunakan promise, karena lebih mudah, dan juga bisa menggunakan async await
.
Jika menggunakan callback, kita harus menggunakan callback terus menerus, dan malah menyebabkan callback hell.
Sedangkan untuk blocking sendiri dapat digunakan untuk pembelajaran, namun kalau bisa jangan gunakan untuk sebuah project, karena dia akan melakukan blocking terhadap event-loop nodejs-nya.
Untuk penulisan fungsi pada penerapan antara blocking, promise ataupun callback dapat dilihat pada dokumentasi resmi nya.
Untuk contoh penggunaan blocking dan juga callback dapat dilihat sebagai berikut:
Buat sebuah file bernama file-system.mjs
terlebih dahulu, lalu buat contoh kode di bawah ini:
import fs from 'fs'
Kode di atas memungkinkan kita untuk melakukan import terhadap library File System. Untuk library yang ini, dapat dipakai untuk blocking dan juga callback.
Perbedaan mendasar antara blocking dan juga callback ialah ketika salah satu fungsi terdapat kata Sync()
maka itu merupakan library yang menggunakan tipe blocking, begitu pula sebaliknya.
Contoh jika kita ingin menggunakan blocking, maka kita dapat menggunakan kode seperti ini:
fs.readFileSync('file-system.mjs')
Sedangkan ketika ingin menggunakan callback maka kode di atas akan menjadi seperti ini:
fs.readFile('file-system.mjs', (err, data) => {
if (err) throw err;
console.log(data.toString());
}) )
Pada kode di atas terlihat kita tidak menggunakan tambahan kata Sync()
pada fungsi ketika menggunakan callback, namun kita harus menggunakan callback di dalam parameternya.
Baiklah, selanjutnya kita akan menggunakan library yang lebih author rekomendasikan, yaitu promise
Untuk menggunakan promise, pada saat melakukan import akan menjadi seperti berikut:
import fs from 'fs/promises'
Nah ketika telah meng-import fs/promises
maka sudah menjadi promise.
Sekarang coba tulis kode di bawah:
const buffer = await fs.readFile('file-system.mjs')
console.info(buffer.to String())
Kode di atas merupakan kode yang kita tulis ketika kita menggunakan library yang bersifat promise, dan untuk penggunaan-nya kita bisa memakai await sebagai key
.
Kode di atas memungkinkan kita untuk membaca isi file file-system.mjs
itu sendiri, dan kemudian menuliskannya ke konsol dengan menggunakan buffer
(buffer
akan di bahas di postingan lain).
Kemudian kita mengubah buffer
file menjadi String dengan menggunakan fungsi .toString()
.
Jika kita run kode di atas dengan node file-system.mjs
maka akan menampilkan output sebagai berikut:
Selanjutnya coba kita buat sebuah kode untuk menuliskan data ke dalam sebuah file, seperti dibawah ini:
await fs.writeFile('tempt.txt', 'hello')
Jika kita jalankan kode di atas maka akan menampilkan output berupa file temp.txt
pada direktori project kita.
Baiklah, begitulah yang bisa kita lakukan dengan standard library dari nodejs file system, kita mampu memanipulasi file, baik dari membaca, ataupun mengubah, menghapus, dan sebagainya. Kalian hanya perlu membaca dokumentasi lebih lanjut pada website resminya.
Apalagi jika kalian sudah familiar dengan perintah terminal linux, kalian akan lebih mengenal dengan mudah, karena beberapa fungsi mengambil referensi yang sama dengan perintah-perintah di linux, seperti rmdir
, rm
, mkfile
, cp
, link
, dan lain sebagainya.
Tag :
Artikel Terkait :