Di node, modul fs mengacu pada "modul sistem file", yang merupakan modul yang digunakan untuk mengoperasikan file. Sebagian besar API modul fs menyediakan tiga metode operasi: 1. Operasi file sinkron: kode akan diblokir dan tidak akan terus dijalankan; 2. File operasi fungsi panggilan balik asinkron: kode tidak akan diblokir dan fungsi panggilan balik perlu diteruskan. Ketika hasilnya dihasilkan, fungsi panggilan balik dijalankan; 3. File operasi Janji Asinkron: kode tidak akan diblokir, dan Janji akan dikembalikan dengan memanggil operasi metode melalui fs.promises.
Lingkungan operasi tutorial ini: sistem Windows 7, nodejs versi 16, komputer DELL G3.
Modul sistem file (disingkat fs) memungkinkan kita mengakses dan berinteraksi dengan sistem file di komputer kita.
Modul fs adalah modul yang disediakan secara resmi oleh Node.js untuk mengoperasikan file. Ini menyediakan serangkaian metode dan properti untuk memenuhi kebutuhan operasi file pengguna.
fs.readFile() metode, digunakan untuk membaca isi file yang ditentukan
metode fs.writeFile(), digunakan untuk menulis konten ke file tertentu jika Anda ingin menggunakannya dalam kode JavaScript
Modul sistem file adalah modul inti Node.js. Artinya kita tidak perlu menginstalnya. Satu-satunya hal yang perlu kita lakukan adalah mengimpor modul fs ke filenya sendiri.
Jadi di bagian atas file tambahkan:
const fs = memerlukan('fs')Sekarang kita dapat memanggil metode apa pun dari modul sistem file menggunakan awalan fs.
Alternatifnya, kita cukup mengimpor metode yang diperlukan dari fs API sebagai berikut:
const { writeFile, readFile } = memerlukan('fs')Catatan: Untuk kenyamanan, kita juga perlu mengimpor modul path. Ini adalah modul inti Node.js lainnya yang memungkinkan kita bekerja dengan jalur file dan direktori.
Setelah mengimpor modul fs, tambahkan:
const jalur = memerlukan('jalur')Saat menggunakan modul sistem file, modul jalur tidak diperlukan. Tapi itu sangat membantu kami!
Operasi file modul fs umumnya mendukung dua API: sinkron dan asinkron. Asinkron juga menyertakan fungsi panggilan balik dan formulir promsie. Sinkronisasi biasanya diikuti dengan kata sinkronisasi.
Sebagian besar API modul fs menyediakan tiga metode operasi:
Pengoperasian file yang sinkron: kode akan diblokir dan tidak akan terus dijalankan
File operasi fungsi panggilan balik asinkron: kode tidak akan diblokir, fungsi panggilan balik harus diteruskan, dan ketika hasilnya diperoleh, fungsi panggilan balik dijalankan
File operasi Janji Asinkron: Kode tidak akan diblokir. Memanggil operasi metode melalui fs.promises akan mengembalikan Janji, yang dapat diproses melalui lalu dan menangkap.
Perhatikan bahwa semua metode fs tidak sinkron secara default. Namun, kita dapat menggunakan versi tersinkronisasi dengan menambahkan Sync di akhir metode.
Misalnya, versi sinkron dari metode writeFile adalah writeFileSync. Metode sinkron menyelesaikan kode secara sinkron, sehingga memblokir thread utama. Memblokir thread utama di Node.js dianggap praktik buruk dan kita tidak boleh melakukannya.
Oleh karena itu, di bawah ini kita akan menggunakan metode asynchronous dalam modul sistem file.
Untuk menulis ke file dari aplikasi Node.js, gunakan metode writeFile.
Metode writeFile menerima setidaknya parameter berikut:
Panggilan balik konten nama fileJika file yang ditentukan sudah ada, file tersebut akan menggantikan konten lama dengan konten yang Anda berikan sebagai argumen. Jika file yang ditentukan tidak ada, file baru akan dibuat.
Setelah mengimpor modul fs dan path, tulis kode berikut di file:
fs.writeFile('content.txt', 'Semua bekerja dan tidak bermain membuat Jack menjadi anak yang membosankan!', err => { if (err) throw err process.stdout.write('Berhasil dibuat!')})Kode di atas akan membuat file baru bernama content.txt dan menambahkan teks All work and no play menjadikan Jack anak yang membosankan sebagai kontennya. Jika ada kesalahan, fungsi panggilan balik akan menampilkan kesalahan tersebut. Jika tidak, konsol akan menampilkan bahwa file berhasil dibuat.
Ada variasi lain dari writeFile, seperti:
fs.writeFileSync — Menulis file secara sinkron fsPromises.writeFile — Menulis file menggunakan API berbasis PromiseLihat intisari ini: https://Gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92
Sebelum membaca file, jalur ke file tersebut perlu dibuat dan disimpan. Jalur modul jalur nyaman digunakan di sini.
Dengan menggunakan metode path dari modul join, Anda dapat membuat path file sebagai berikut:
const filePath = path.join(proses.cwd(), 'konten.txt')Parameter pertama process.cwd() mengembalikan direktori kerja saat ini. Sekarang Anda memiliki jalur file, Anda dapat membaca konten file.
Tulis kode berikut di file:
fs.readFile(filePath, (kesalahan, konten) => { jika (kesalahan) melempar kesalahan proses.stdout.write(konten)})Metode readFile menerima setidaknya dua parameter:
Panggilan balik jalur fileJika ada kesalahan, maka akan muncul kesalahan. Jika tidak, ia akan mencetak isi file di terminal.
Ada variasi lain dari readFile, seperti:
fs.readFileSync — Menulis ke file secara sinkron fsPromises.readFile — Menulis ke file menggunakan API berbasis PromiseLihat intisari ini: https://Gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d
Menampilkan file dalam direktori sangat mirip dengan membaca isi file. Namun, alih-alih meneruskan jalur file, lewati direktori kerja saat ini (kita dapat meneruskan direktori lain mana pun).
Kemudian, teruskan fungsi panggilan balik untuk menangani responsnya. Tulis kode berikut di file:
fs.readdir(proses.cwd(), (kesalahan, file) => { jika (kesalahan) melempar kesalahan console.log(file)})Sejauh ini, kami hanya menggunakan process.stdout.write untuk mengeluarkan konten ke terminal. Namun, Anda cukup menggunakan console.log, seperti pada cuplikan kode di atas.
Jika kita menjalankan aplikasi, kita akan mendapatkan array yang berisi semua file di direktori.
Lihat inti ini: https://Gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e
Modul sistem file memiliki metode yang memungkinkan Anda menghapus file. Namun, penting untuk dicatat bahwa ini hanya berfungsi untuk file, bukan direktori.
Ketika metode unlink dipanggil dengan jalur file sebagai parameter, itu akan menghapus file. Tambahkan cuplikan kode berikut ke file:
fs.unlink(filePath, error => { if (error) throw error console.log('File telah dihapus!')})Jika Anda menjalankan ulang kode tersebut, file Anda akan dihapus!
Lihat intisari ini: https://Gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e
Kita dapat membuat direktori secara asinkron menggunakan metode mkdir. Tulis kode berikut di file:
fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { rekursif: true }, (err) => { if (err) throw err console.log('Folder berhasil dibuat!') })Pertama, buat folder baru di direktori kerja saat ini. Seperti disebutkan sebelumnya, Anda bisa mendapatkan direktori kerja saat ini dari objek proses menggunakan metode cwd().
Kemudian pass folder atau folder yang akan dibuat. Namun, ini tidak berarti Anda harus membuat folder baru di direktori kerja Anda saat ini. Anda dapat membuatnya di mana saja.
Sekarang, parameter kedua adalah opsi rekursif. Jika tidak disetel ke true, beberapa folder tidak dapat dibuat. Jika opsi rekursif disetel ke false, kode di atas akan memberikan kesalahan. Cobalah!
Namun, jika Anda hanya ingin membuat folder, tidak perlu menyetel opsi rekursif ke true.
Kode berikut berfungsi dengan baik!
fs.mkdir(`${process.cwd()}/myFolder`, err => { if (err) throw err console.log('Folder berhasil dibuat!')});Oleh karena itu, saya ingin menekankan penggunaan rekursif. Anda perlu menyetelnya ke true jika Anda ingin membuat folder di dalam folder. Ini akan membuat semua folder meskipun tidak ada.
Sebaliknya, jika Anda hanya ingin membuat folder, biarkan saja salah.
Lihat intisari ini: https://Gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066
Logika untuk menghapus direktori mirip dengan membuat direktori. Jika Anda melihat kode yang ditulis untuk membuat direktori dan kode di bawah ini, Anda akan melihat kesamaannya.
Jadi tulis kode berikut di file:
fs.rmdir(`${process.cwd()}/myFolder/`, { rekursif: true }, err => { if (err) throw err console.log('Folder berhasil dihapus!')})Gunakan metode rmdir dari modul sistem file dan berikan parameter berikut:
Direktori yang akan dihapus panggilan balik properti rekursifJika properti rekursif disetel ke true, maka folder dan isinya akan dihapus. Penting untuk dicatat bahwa Anda perlu menyetelnya ke true jika folder tersebut berisi konten. Jika tidak, Anda akan mendapatkan kesalahan.
Cuplikan kode berikut hanya berfungsi ketika folder tersebut kosong:
fs.rmdir(`${process.cwd()}/myFolder/`, err => { if (err) throw err console.log('Folder berhasil dihapus!')})Jika ada file dan/atau folder lain di myFolder, kesalahan akan terjadi jika { recursive: true } tidak diteruskan.
Penting untuk mengetahui kapan harus menggunakan opsi rekursif dan kapan tidak untuk menghindari masalah.
Lihat intisari ini: https://Gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce
Dengan menggunakan modul fs, Anda dapat mengganti nama direktori dan file. Cuplikan kode berikut menunjukkan cara melakukannya menggunakan metode rename.
// Ganti nama direktori fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => { if (err) throw err console .log('Ganti nama direktori!')});//Ganti nama file fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile .txt` , err => { if (err) throw err console.log('File diganti namanya!')});Metode rename berisi tiga parameter:
Parameter pertama adalah folder/file yang ada dan parameter kedua adalah nama callback baruJadi, untuk mengganti nama file atau direktori, kita perlu memasukkan nama file/direktori saat ini dan nama baru. Setelah menjalankan aplikasi, nama direktori/file harus diperbarui.
Perhatikan bahwa jika jalur baru sudah ada (misalnya, nama baru untuk file/folder), jalur tersebut akan ditimpa. Jadi pastikan untuk tidak menimpa file/folder yang ada secara tidak sengaja.
Lihat intisari ini: https://Gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e
Kita juga dapat menambahkan konten baru ke file yang sudah ada menggunakan metode appendFile.
Jika kita membandingkan kedua metode writeFile dan appendFile, kita dapat melihat bahwa keduanya serupa. Lewati jalur file, konten, dan panggilan balik.
fs.appendFile(filePath, 'nSemua bekerja dan tidak bermain membuat Jack menjadi anak yang membosankan!', err => { if (err) throw err console.log('Semua bekerja dan tidak bermain membuat Jack menjadi anak yang membosankan!')} )Cuplikan kode di atas menunjukkan cara menambahkan konten baru ke file yang sudah ada. Jika Anda menjalankan aplikasi dan membuka file, Anda akan melihat konten baru di dalamnya.