author Ahmad Muhardian

Belajar Nodejs #05: Cara Menggunakan Modul File System untuk Baca Tulis File


Tutorial Nodejs untuk Pemula: Menggunakan Modul Filesystem 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:

  1. Terima request dari user;
  2. Baca File HTML yang ada di server;
  3. 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.

File HTML dan Javascript

Setelah itu, coba eksekusi baca_file.js:

node baca_file.js

Lalu buka http://localhost:8000.

Membaca File di Nodejs

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:

  1. Nama file;
  2. 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:

Membuat file di nodejs

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:

Membuat file dengan fs.open()

Fungsi fs.open() memiliki tiga parameter:

  1. Nama file;
  2. Flag;
  3. 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 seperti w, tapi akan error jika sudah ada filenya.
  • w+ buka file untuk ditulis dan dibaca.
  • wx+ sama seperti w+ tapi akan error jika sudah ada filenya.
  • a buka file untuk diisi.
  • ax sama seperti a tapi akan error jika sudah ada filenya.
  • a+ buka file untuk diisi.
  • ax+ sama seperti a+ 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:

Tulis dan baca file di Nodejs

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:

  1. Nama file;
  2. Nama baru;
  3. 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:

Rename file di nodejs

Menghapus File dengan Nodejs

Modul fs memiliki fungsi unlink() untuk menghapus file. Fungsi ini memiliki dua parameter:

  1. Nama file yang akan dihapus;
  2. 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:

Menghapus file dengan nodejs

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:


  1. W3schools. “Node.js File System Module”. Retrieved 10 September 2018. ↩︎ ↩︎

  2. https://nodejs.org/api/fs.html ↩︎ ↩︎

  3. Tutorialspoint. “Node.js File System. Retrieved 10 September 2018. ↩︎