Terdapat banyak objek terbina dalam dalam nod, yang boleh membantu kami melaksanakan banyak operasi, termasuk operasi pada laluan, fail, dsb. Artikel berikut akan memperkenalkan kepada anda modul laluan dan modul fs antara modul terbina dalam yang biasa digunakan saya harap ia akan membantu anda.
Modul laluan digunakan untuk memproses laluan dan fail, menyediakan banyak kaedah.
Terdapat keperluan untuk menyambung laluan dan nama fail.
const basePath = '/user/why' const filename = 'abc.txt'
Kemudian seseorang akan menggunakan penyambungan rentetan untuk penyambungan.
const filePath = basePath + '/' + filename console.log(filePath);
Walaupun tiada masalah dengan hasil ini, memandangkan sistem yang berbeza, sistem Windows boleh menggunakan sama ada \ atau / sebagai pemisah laluan, manakala sistem pengendalian Mac OS, Linux dan Unix menggunakan / sebagai simbol pemisah laluan .
Untuk menyelesaikan masalah di atas, kita boleh menggunakan path.resolve untuk menyambung laluan.
const path = require('path') const basePath = '/user/why' const filename = 'abc.txt' const filePath = path.resolve(basePath, filename) console.log(filePath);
const path = require('path') const filePath = '/User/haha/abc.txt' console.log(path.dirname(filePath)); console.log(path.basename(filePath)); console.log(path.extname(filePath));
Jika kita ingin menyambung berbilang laluan, tetapi sistem pengendalian yang berbeza mungkin menggunakan pemisah yang berbeza, kita boleh menggunakan fungsi gabungan laluan.
const path = require('path') const basepath = '/User/haha' const filename = 'abc.txt' const filePath = path.join(basepath, filename) console.log(filePath);
Jika kami mahu menyambung fail dan folder , anda boleh gunakan jalan.menyelesaikan.
const basepath = 'User/haha' const filename = 'abc.txt'
path.resolve dan path.join juga boleh digunakan untuk menyambung laluan, jadi apakah perbezaannya?
const basepath = '../User/haha' const filename = './abc.txt' const othername = './haha.js' const filePath1 = path.join(basepath, filename, othername) console.log(filePath1); const filePath2 = path.resolve(basepath, filename, othername) console.log(filePath2);
Kita boleh nampak perbezaannya.
nodejsAPI sistem fail kebanyakannya menyediakan tiga kaedah operasi:
Kendalian fail segerak: kod akan disekat dan tidak akan meneruskan pelaksanaan
Kendalian fail fungsi panggil balik tak segerak: kod tidak akan disekat dan panggilan balik memerlukan untuk dihantar dalam Fungsi, apabila keputusan diperoleh, fungsi panggil balik melaksanakan
Fail operasi Asynchronous Promise: kod tidak akan disekat operasi kaedah panggilan melalui fs.promises akan kembali a Janji, yang boleh dilalui kemudian, tangkap untuk diproses.
Kaedah 1 operasi penyegerakan: fs.statSync
const fs = require('fs') const filepath = './abc.txt' const info = fs.statSync(filepath) console.log('后续需要执行的代码'); console.log(info);
Kaedah 2 operasi tak segerak
fs.stat(filepath, (err, info) => { if(err) { console.log(err); return } console.log(info); console.log(info.isFile()); // 判断是否是一个文件 console.log(info.isDirectory()); // 判断是否是一个文件夹 }) console.log('后续需要执行的代码');
Kaedah 3: Janji
fs.promises.stat(filepath).then(info => { console.log(info); }).catch(err => { console.log(err); }) console.log('后续需要执行的代码');
nod ialah Semua fail terbuka diberikan nombor jenis penerangan fail. Semua operasi sistem fail menggunakan deskriptor fail ini untuk mengenal pasti dan menjejaki setiap fail tertentu.
Kaedah fs.open() digunakan untuk memperuntukkan deskriptor fail baharu fd. Setelah diperuntukkan, deskriptor fail boleh digunakan untuk membaca data daripada fail, menulis data ke fail atau meminta maklumat tentang fail.
const fs = require('fs') fs.open('./abc.txt', (err, fd) => { if(err) { console.log(err); return } // 通过文件描述符去获取文件信息 fs.fstat(fd, (err, info) => { console.log(info); }) })
fs.readFile(path[, options], callback): Baca kandungan fail
fs. writeFile (path[, options], callback): Tulis kandungan pada fail
parameter pilihan:
bendera: Kaedah penulisan
pengekodan: Pengekodan aksara
Penulisan fail
fs.writeFile('./abc.txt', content, {flag: "a"}, err => { console.log(err); })
Membaca fail
fs.readFile('./abc.txt', (err, data) => { console.log(data); })
Jika pengekodan tidak diisi, hasil Penimbal (perduaan) akan dikembalikan.
fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => { console.log(data); })
Gunakan fs.mkdir() atau fs . mkdirSync mencipta folder baharu.
const fs = require('fs') // 创建文件夹 const dirname = './haha' if(!fs.existsSync(dirname)) { fs.mkdir(dirname, (err) => { console.log(err); }) }
fs.readdir
fs.readdir(dirname, (err, files) => { console.log(files); })
Dapatkan semua fail dalam folder, direktori ialah seperti berikut Seperti yang ditunjukkan dalam rajah, rekursi boleh digunakan.
const fs = require('fs') const path = require('path') const dirname = './haha' function getFiles(dirname) { fs.readdir(dirname, {withFileTypes: true}, (err, files) => { // console.log(files); for(let file of files) { // 判断是否是文件夹 if(file.isDirectory()) { const filepath = path.resolve(dirname, file.name) getFiles(filepath) } else { console.log(file.name); } } }) } getFiles(dirname)
可以使用fs.rename对文件夹进行重命名。
fs.rename('./haha', './xixi', err => { console.log(err); })
更多node相关知识,请访问:nodejs 教程!
Atas ialah kandungan terperinci Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!