Belajar Nodejs #05: Cara Menggunakan Modul File System untuk Baca Tulis File
Pada tutorial sebelumnya, kita sudah mempelajari modul HTTP yang merupakan modul untuk membuat webserver dan melakukan HTTP Request.
Berikut ini contoh program yang telah dibuat:
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('Hello <b>World</b>!');
response.end();
}).listen(8000);
console.log("server running on http://localhost:8000");
Pada kode ini, kita melakukan hard coding kode HTML (menulis langsung kode HTML dalam kode nodejs).
response.write('Hello <b>World</b>!');
Bagaimana kalau nanti ada file HTML yang ingin kita kirim sebagai balasannya?
Untuk melakukan ini kita membutuhkan bantuan dari modul file system.
Prosesnya akan seperti ini:
- Terima request dari user;
- Baca File HTML yang ada di server;
- Kirim balasan ke user.
Pada tahap nomer dua, kita akan menggunakan modul file system.
Baiklah, untuk lebih detailnya…
Mari kita mulai.
Membaca File di Nodejs
Pada Nodejs, terdapat modul file system (fs
)
yang memungkinkan kita untuk mengakses file system.
Modul file system sering digunakan untuk: 1
- Baca file;
- Tulis file;
- Rename file;
- hapus file;
- dll.
Modul ini sudah ada di Nodejs, sehingga kita tidak perlu menginstalnya melalui NPM (Node Package Manager). 2
Untuk bisa menggunakan modul fs
kita harus mengimpornya terlebih dahulu
dengan fungsi require()
.
var fs = require('fs');
Mari kita coba membaca file dengan modul fs
. Pertama silakan buat
file HTML dengan nama index.html
dan isi sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<title>Tutorial Nodejs</title>
</head>
<body>
<h1>Tutorial Nodejs Petani Kode</h1>
<p>Belajar Baca Tulis File di Nodejs</p>
</body>
</html>
Lalu buat kode JavaScript baru bernama baca_file.js
dengan isi sebagai berikut:
var fs = require('fs');
var http = require('http');
http.createServer(function (request, response) {
// baca file
fs.readFile('index.html', (err, data) => {
if (err) throw err;
// kirim respon
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
response.end();
});
}).listen(8000);
console.log("server running on http://localhost:8000");
Pastikan file javascript dan HTML-nya berada di dalam satu folder.
Setelah itu, coba eksekusi baca_file.js
:
node baca_file.js
Lalu buka http://localhost:8000.
Yap! 🎉
Kita sudah berhasil membuat server Nodejs dan mengirim file HTML sebagai balasannya.
Yang perlu diperhatikan pada kode di atas adalah pada bagian ini:
// baca file
fs.readFile('index.html', (err, data) => {
if (err) throw err;
// kirim respon
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
response.end();
});
Method readFile()
adalah method yang digunakan untuk membaca file.
Lalu method ini memiliki dua parameter:
- Nama file;
- Fungsi yang akan dieksekusi saat file dibaca.
Pada kode di atas, kita menggunakan arrow function:
(err, data) => { ... }
Parameter err
akan berisi error ketika file gagal dibaca
dan parameter data
akan berisi data dari file.
Karena itu, di dalam fungsi ini kita mengirimkan
respon ke client dengan parameter data
.
// kirim respon
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
response.end();
Maka respon yang akan diterima oleh client akan sesuai
dengan isi file index.html
.
Membuat File di Nodejs
Selain untuk membaca file, modul fs
juga digunakan untuk
membuat file baru. Terdapat beberapa method yang dapat digunakan untuk membuat file: 1
fs.appendFile()
untuk membuat dan mengisi file;fs.open()
untuk membuat, membuka, dan menulis file;fs.writeFile()
untuk membuat dan menulis file.
Mari kita coba satu per satu.
Pertama silakan buat file javascript dengan nama fs_append.js
dengan isi sebagai berikut:
var fs = require('fs');
//create a file named mynewfile1.txt:
fs.appendFile('mynewfile1.txt', 'Hello dari Petani Kode!', function (err) {
if (err) throw err;
console.log('Saved!');
});
Kode program di atas akan membuat file dengan nama mynewfile1.txt
dengan isi Hello dari petanikode!
.
Mari kita coba eksekusi:
Apabila kita eksekusi lagi node fs_append.js
, maka isi file dari mynewfile1.txt
akan bertambah menjadi:
Hello dari Petani Kode!Hello dari Petani Kode!
Jika kita mengeksekusinya sebanyak 10 kali maka teks Hello dari Petani Kode!
akan ditambahkan sebanyak 10 kali.
Ini merupakan sifat dari method fs.appendFile()
, ia akan selalu menambah
isi dari file di setiap eksekusi.
Membuat file dengan fungsi fs.open()
Kemudian fungsi/method berikutnya adalah fs.open()
.
Fungsi ini memiliki dua fungsi, yaitu untuk membuka dan menulis file.
Mari kita coba…
Buatlah file javascript baru dengan nama fs_open.js
dengan isi sebagai berikut:
var fs = require('fs');
fs.open('mynewfile2.txt', 'w', function (err, file) {
if (err) throw err;
console.log('Saved!');
});
Lalu coba eksekusi:
Fungsi fs.open()
memiliki tiga parameter:
- Nama file;
- Flag;
- Fungsi yang akan dieksekusi saat file dibuka.
Pada contoh di atas, kita memberikan Flag w
(write) untuk
memberitahu fungsi fs.open()
kalau kita ingin menulis
atau membuat file baru.
Maka fungsi fs.open()
akan membuat file kosong apabila
belum ada file dengan nama yang ditentukan.
Namun, apabila di sana sudah ada file, fungsi fs.open()
akan menindihnya.
Lalu saat kita ingin membaca file saja,
maka kita bisa berikan flag r
(read).
Selain r
dan w
, berikut ini beberapa flags yang
bisa diberikan: 3
r
buka file untuk dibaca. Jika file tidak ada maka akan terjadi error.r+
buka file untuk dibaca dan ditulis. Apabila file tidak ada maka akan terjadi error.rs
buka file untuk dibaca dalam mode synchronous.rs+
buka file untuk dibaca dan ditulis dalam mode synchronous.w
buka file untuk ditulis.wx
sama sepertiw
, tapi akan error jika sudah ada filenya.w+
buka file untuk ditulis dan dibaca.wx+
sama sepertiw+
tapi akan error jika sudah ada filenya.a
buka file untuk diisi.ax
sama sepertia
tapi akan error jika sudah ada filenya.a+
buka file untuk diisi.ax+
sama sepertia+
tapi akan error jika sudah ada filenya.
Untuk memahaminya, mari kita coba buat program untuk menulis dan membaca file.
Berarti flag yang bisa digunakan adalah w+
,
karena kita akan menulis dulu baru membacanya.
Buatlah file baru bernama fs_open_wr.js
dengan
isi sebagai berikut:
var fs = require('fs');
fs.open('mynewfile2.txt', 'w+', function (err, file) {
if (err) throw err;
// konten yang akan kita tulis ke file
let content = "Hello Petani Kode!";
// tulis konten ke file
fs.writeFile(file, content, (err) => {
if (err) throw err;
console.log('Saved!');
});
// baca file
fs.readFile(file, (err, data) => {
if (err) throw err;
console.log(data.toString('utf8'));
});
});
Pada kode di atas, kita akan menulis ke file mynewfile2.txt
.
Terdapat dua fungsi fs
yang kita gunakan:
fs.writeFile()
untuk menulis ke file;- dan
fs.readFile()
untuk membaca file.
Pada fungsi fs.readFile()
, kita menggunakan fungsi
toString('utf8')
untuk mengubah buffer menjadi teks
dengan encode UTF-8.
Sekarang coba eksekusi programnya:
Seperti yang kita harapkan, filenya berhasil ditulis dan dibaca.
Mengubah Nama File dengan Nodejs
Setelah kita mencoba membaca dan menulis file di Nodejs, berikutnya kita coba untuk mengubah nama (rename) file.
Pada modul fs
terdapat fungsi rename()
untuk mengubah nama.
Fungsi ini memiliki tiga parameter:
- Nama file;
- Nama baru;
- Fungsi yang akan dieksekusi saat nama diubah.
Mari kita coba…
Buatlah file javascript baru dengan nama rename.js
dan isi
dengan kode berikut ini:
var fs = require('fs');
fs.rename('mynewfile1.txt', 'myrenamedfile.txt', function (err) {
if (err) throw err;
console.log('File Renamed!');
});
Setelah itu coba eksekusi programnya:
Menghapus File dengan Nodejs
Modul fs
memiliki fungsi unlink()
untuk menghapus file.
Fungsi ini memiliki dua parameter:
- Nama file yang akan dihapus;
- fungsi yang akan dieksekusi saat file dihapus.
Mari kita coba…
Buatlah file baru bernama delete.js
, lalu isi dengan kode berikut:
var fs = require('fs');
fs.unlink('mynewfile2.txt', function (err) {
if (err) throw err;
console.log('File deleted!');
});
Pada kode program di atas, kita akan menghapus file mynewfile2.txt
.
Mari kita coba eksekusi:
Bonus: [ 🎁 download source code dari tutorial ini]
Apa Selanjutnya?
Kita sudah mengenal modul fs
yang merupakan modul File System untuk
memanipulasi file. Modul ini masih punya banyak fungsi lagi,
seperti: melihat isi direktori, membuat direktori, menghapus direktori,
mengubah hak akses (chmod), dan lain-lain.
Selengkapnya, kita bisa baca di dokumentasi. 2
Intinya, modul ini khusus untuk melakukan operasi pada file system.
Ke depan kita akan membutuhkan modul ini untuk membuat:
- Webserver Statis
- Fitur upload file ke server
- Fitur generate PDF.
- Image Processing.
- dll.
W3schools. “Node.js File System Module”. Retrieved 10 September 2018. ↩︎ ↩︎
Tutorialspoint. “Node.js File System. Retrieved 10 September 2018. ↩︎