Rumah >hujung hadapan web >tutorial js >Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

青灯夜游
青灯夜游ke hadapan
2022-03-31 20:34:032418semak imbas

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.

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

modul laluan

Modul laluan digunakan untuk memproses laluan dan fail, menyediakan banyak kaedah.

path.resolve

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 .

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

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);

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

Dapatkan maklumat daripada laluan

  • dirname: Dapatkan folder induk fail
  • nama asas: Dapatkan nama fail
  • nama ext: Dapatkan sambungan fail
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));

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

Penyambungan laluan

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);

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

Sambung fail dan folder

Jika kami mahu menyambung fail dan folder , anda boleh gunakan jalan.menyelesaikan.

const basepath = 'User/haha'
const filename = 'abc.txt'

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

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.

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

modul fs

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.

Baca status fail (maklumat)

Kaedah 1 operasi penyegerakan: fs.statSync

const fs = require('fs')

const filepath = './abc.txt'
const info = fs.statSync(filepath)
console.log('后续需要执行的代码');
console.log(info);

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

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('后续需要执行的代码');

Penerangan fail

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);
  })
})

Membaca dan menulis fail

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.

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => {
  console.log(data);
})

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

Buat folder

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);
  })
}

Dapatkan kandungan folder

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.

Analisis ringkas modul biasa dalam nod: modul laluan dan modul fs

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!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam