Node.js - Sistem Fail
Selamat datang, para pemrogram masa depan! Hari ini, kita akan melihat dunia menarik Node.js dan modul Sistem Failnya. Sebagai guru komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk membimbing Anda dalam perjalanan ini dengan banyak contoh dan penjelasan. Jadi, pasang sabuk pengaman dan mari kita mulai!
Synchronous vs Asynchronous
Sebelum kita melompat ke operasi fail yang halus, mari kita 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 tugas berikutnya. Dalam dunia asynchronous, Anda memesan kopi Anda dan kemudian melanjutkan bisnis Anda saat barista menyiapkan nya.
Dalam Node.js, kita memiliki kedua metode synchronous dan asynchronous untuk operasi fail. Mari kita lihat contoh:
const fs = require('fs');
// Membaca synchronous
const data = fs.readFileSync('hello.txt', 'utf8');
console.log(data);
// Membaca asynchronous
fs.readFile('hello.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Dalam versi synchronous, program kita menunggu sampai fail dibaca sebelum melanjutkan. Dalam versi asynchronous, ia melanjutkan eksekusi saat fail sedang dibaca, dan kemudian menjalankan fungsi callback saat selesai.
Menulis fail
Sekarang, mari kita belajar bagaimana menulis ke fail. Itu seperti meninggalkan catatan untuk diri Anda sendiri!
const fs = require('fs');
// Menulis synchronous
fs.writeFileSync('note.txt', 'Hello, Future Me!');
// Menulis asynchronous
fs.writeFile('note.txt', 'Hello, Future Me!', (err) => {
if (err) throw err;
console.log('Fail disimpan!');
});
Dalam kedua kasus, kita sedang membuat (atau menimpa) fail 'note.txt' dengan isi "Hello, Future Me!". Versi asynchronous termasuk fungsi callback yang dijalankan setelah fail ditulis.
Membaca fail
Membaca fail adalah seperti membuka catatan yang Anda tinggalkan untuk diri Anda sendiri. Mari kita lihat bagaimana hal itu dilakukan:
const fs = require('fs');
// Membaca synchronous
const data = fs.readFileSync('note.txt', 'utf8');
console.log(data);
// Membaca 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 pengecodean fail.
Membuka fail
kadang-kadang, kita ingin memiliki kontrol lebih besar atas bagaimana kita berinteraksi dengan fail. Itu di mana metode open
masuk:
const fs = require('fs');
// Membuka asynchronous
fs.open('myfile.txt', 'r', (err, fd) => {
if (err) throw err;
console.log('Fail berhasil dibuka!');
// Ingat untuk menutup fail saat Anda selesai
fs.close(fd, (err) => {
if (err) throw err;
});
});
Ini membuka 'myfile.txt' dalam mode baca ('r'). fd
dalam callback adalah deskriptor fail, yang kita akan gunakan untuk operasi selanjutnya pada fail.
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 fail:
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 fail
Kurios tentang statistik fail? Node.js telah menyiapkan Anda:
const fs = require('fs');
fs.stat('myfile.txt', (err, stats) => {
if (err) throw err;
console.log(`Ukuran fail: ${stats.size} bytes`);
console.log(`Adakah ini direktori? ${stats.isDirectory()}`);
console.log(`Adakah ini fail? ${stats.isFile()}`);
});
Ini memberikan kita informasi seperti ukuran fail, apakah itu direktori atau fail, dan banyak lagi.
Menutup fail
Ingat untuk selalu menutup fail Anda saat Anda selesai dengannya. Itu seperti memasang tutup 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('Fail berhasil ditutup');
});
});
Mengiris fail
Kadang-kadang Anda ingin menjaga fail 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('Isi fail dibersihkan!');
});
Ini mengurangi fail ke 0 byte, secara efektif membersihkan isinya.
Menghapus fail
Ketika Anda selesai dengan fail sepenuhnya, Anda dapat menghapus nya:
const fs = require('fs');
fs.unlink('myfile.txt', (err) => {
if (err) throw err;
console.log('Fail berhasil dihapus');
});
Hati-hati dengan ini - tidak ada tombol undo di kehidupan nyata!
Membuat direktori
Butuh folder baru? Ini cara Anda membuat nya:
const fs = require('fs');
fs.mkdir('mynewfolder', (err) => {
if (err) throw err;
console.log('Direktori berhasil dibuat!');
});
Membaca direktori
Ingin melihat apa yang ada di dalam direktori? Ini cara nya:
const fs = require('fs');
fs.readdir('.', (err, files) => {
if (err) throw err;
console.log('Isi direktori:');
files.forEach(file => {
console.log(file);
});
});
Ini mencantumkan semua fail dan subdirektori di dalam 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('Direktori berhasil dihapus');
});
Catatan: ini hanya bekerja pada direktori kosong.
Referensi Metode
Ini adalah tabel praktis dari metode yang kita cover:
Metode | Deskripsi |
---|---|
readFile | Membaca keseluruhan isi fail |
writeFile | Menulis data ke fail, menggantikan fail jika sudah ada |
open | Membuka fail untuk membaca atau menulis |
close | Menutup deskriptor fail |
stat | Mendapatkan informasi tentang fail |
truncate | Memotong fail ke panjang tertentu |
unlink | Menghapus fail |
mkdir | Membuat direktori baru |
readdir | Membaca isi direktori |
rmdir | Menghapus direktori |
Dan itu saja! Anda sekarang dilengkapi dengan dasar operasi sistem fail di Node.js. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba metode ini. Selamat coding!
Credits: Image by storyset