Node.js - Sistem File

Selamat datang, para pemrogram masa depan! Hari ini, kita akan melihat dunia menarik Node.js dan modul Sistem File-nya. Sebagai guru komputer tetangga yang ramah, saya di sini untuk mengorbit Anda melalui perjalanan ini dengan banyak contoh dan penjelasan. Jadi, sabungkan sepatamu dan mari kita mulai!

Node.js - File System

Synchronous vs Asynchronous

Sebelum kita melompat ke operasi file, mari bicarakan dua konsep penting: operasi synchronous dan asynchronous.

Bayangkan Anda di kedai kopi. Dalam dunia synchronous, Anda memesan kopi Anda, menunggu sampai selesai dibuat, dan kemudian melanjutkan ke tugas berikutnya. Dalam dunia asynchronous, Anda memesan kopi Anda dan kemudian melanjutkan bisnis Anda saat barista menyiapkan nya.

Dalam Node.js, kita memiliki baik metode synchronous maupun asynchronous untuk operasi file. Mari lihat contoh:

const fs = require('fs');

// Read synchronous
const data = fs.readFileSync('hello.txt', 'utf8');
console.log(data);

// Read asynchronous
fs.readFile('hello.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});

Dalam versi synchronous, program kita menunggu hingga file dibaca sebelum melanjutkan. Dalam versi asynchronous, itu terus menjalankan saat file sedang dibaca, dan kemudian menjalankan fungsi callback saat selesai.

Menulis file

Sekarang, mari belajar bagaimana menulis ke file. Itu seperti meninggalkan catatan untuk diri Anda sendiri!

const fs = require('fs');

// Write synchronous
fs.writeFileSync('note.txt', 'Hello, Future Me!');

// Write asynchronous
fs.writeFile('note.txt', 'Hello, Future Me!', (err) => {
if (err) throw err;
console.log('File saved!');
});

Dalam kedua kasus, kita menciptakan (atau menimpa) file 'note.txt' dengan konten "Hello, Future Me!". Versi asynchronous termasuk fungsi callback yang dijalankan setelah file ditulis.

Membaca file

Membaca file adalah seperti membuka catatan yang Anda tinggalkan untuk diri Anda sendiri. Mari lihat bagaimana hal itu dilakukan:

const fs = require('fs');

// Read synchronous
const data = fs.readFileSync('note.txt', 'utf8');
console.log(data);

// Read asynchronous
fs.readFile('note.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});

Kedua metode akan mengeluarkan isi 'note.txt'. Parameter 'utf8' menentukan enkoding file.

Membuka file

kadang-kadang, kita ingin memiliki kontrol lebih besar atas bagaimana kita berinteraksi dengan file. Itu di mana metode open masuk:

const fs = require('fs');

// Open asynchronous
fs.open('myfile.txt', 'r', (err, fd) => {
if (err) throw err;
console.log('File opened successfully!');
// Ingat untuk menutup file saat Anda selesai
fs.close(fd, (err) => {
if (err) throw err;
});
});

Ini membuka 'myfile.txt' dalam mode baca ('r'). fd dalam callback adalah deskripsi file, yang kita akan gunakan untuk operasi lebih lanjut pada file.

API Promises

Untuk mereka yang lebih suka bekerja dengan Promises (jangan khawatir jika Anda belum tahu apa itu!), Node.js menyediakan API berbasis Promise untuk operasi file:

const fs = require('fs').promises;

async function readMyFile() {
try {
const data = await fs.readFile('myfile.txt', 'utf8');
console.log(data);
} catch (error) {
console.error('Error reading file:', error);
}
}

readMyFile();

Ini mencapai hasil yang sama seperti contoh readFile asynchronous sebelumnya, tapi menggunakan sintaks JavaScript modern.

Mendapatkan Informasi File

Curious about a file's stats? Node.js has got you covered:

const fs = require('fs');

fs.stat('myfile.txt', (err, stats) => {
if (err) throw err;
console.log(`Ukuran file: ${stats.size} bytes`);
console.log(`Apakah ini direktori? ${stats.isDirectory()}`);
console.log(`Apakah ini file? ${stats.isFile()}`);
});

Ini memberikan kita informasi seperti ukuran file, apakah itu direktori atau file, dan lainnya.

Menutup file

Ingat untuk selalu menutup file Anda saat Anda selesai dengannya. Itu seperti memasang tutup kembali pada pasta gigi Anda!

const fs = require('fs');

fs.open('myfile.txt', 'r', (err, fd) => {
if (err) throw err;
// Lakukan beberapa operasi...
fs.close(fd, (err) => {
if (err) throw err;
console.log('File closed successfully');
});
});

Mengiris file

kadang-kadang Anda ingin menjaga file tetapi menghapus isi nya. Itu di mana truncate masuk:

const fs = require('fs');

fs.truncate('myfile.txt', 0, (err) => {
if (err) throw err;
console.log('File content cleared!');
});

Ini mengurangi file ke 0 byte, secara efektif menghapus isi nya.

Menghapus file

Ketika Anda selesai dengan file sepenuhnya, Anda dapat menghapus nya:

const fs = require('fs');

fs.unlink('myfile.txt', (err) => {
if (err) throw err;
console.log('File deleted successfully');
});

Hati-hati dengan ini - tidak ada tombol undo di kehidupan nyata!

Membuat direktori

Butuh folder baru? Berikut cara Anda membuat nya:

const fs = require('fs');

fs.mkdir('mynewfolder', (err) => {
if (err) throw err;
console.log('Directory created successfully!');
});

Membaca direktori

Ingin melihat apa yang ada di dalam direktori? Berikut cara nya:

const fs = require('fs');

fs.readdir('.', (err, files) => {
if (err) throw err;
console.log('Directory contents:');
files.forEach(file => {
console.log(file);
});
});

Ini mencantumkan semua file dan subdirektori di direktori saat ini.

Menghapus direktori

Dan akhirnya, jika Anda ingin menghapus direktori:

const fs = require('fs');

fs.rmdir('mynewfolder', (err) => {
if (err) throw err;
console.log('Directory removed successfully');
});

Catatan bahwa ini hanya bekerja pada direktori kosong.

Referensi Metode

Berikut adalah tabel praktis dari metode yang kita bahas:

Metode Deskripsi
readFile Membaca seluruh isi file
writeFile Menulis data ke file, mengganti file jika sudah ada
open Membuka file untuk dibaca atau ditulis
close Menutup deskripsi file
stat Mendapatkan informasi tentang file
truncate Memotong file ke panjang tertentu
unlink Menghapus file
mkdir Membuat direktori baru
readdir Membaca isi direktori
rmdir Menghapus direktori

Dan itu saja! Anda sekarang dilengkapi dengan dasar operasi sistem file di Node.js. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba metode ini. Selamat coding!

Credits: Image by storyset