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!
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