Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

青灯夜游
青灯夜游nach vorne
2022-03-31 20:34:032203Durchsuche

Es gibt viele integrierte Objekte in node, die uns bei der Durchführung vieler Vorgänge helfen können, einschließlich Vorgängen für Pfade, Dateien usw. Der folgende Artikel stellt Ihnen das Path-Modul und das FS-Modul vor, die zu den häufig verwendeten integrierten Modulen von Node gehören. Ich hoffe, es wird Ihnen hilfreich sein!

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Pfadmodul

Das Pfadmodul wird zum Verarbeiten von Pfaden und Dateien verwendet und bietet viele Methoden.

path.resolve

Es besteht die Anforderung, den Pfad und den Dateinamen zu verketten.

const basePath = '/user/why'
const filename = 'abc.txt'

Dann wird jemand String-Splicing zum Spleißen verwenden.

const filePath = basePath + '/' + filename
console.log(filePath);

Obwohl dieses Ergebnis kein Problem darstellt, können Windows-Systeme bei unterschiedlichen Systemen entweder \ oder / als Pfadtrennzeichen verwenden, während Mac OS-, Linux- und Unix-Betriebssysteme / als Pfadtrennzeichen verwenden.

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Um die oben genannten Probleme zu lösen, können wir path.resolve verwenden, um Pfade zu verbinden.

const path = require('path')

const basePath = '/user/why'
const filename = 'abc.txt'

const filePath = path.resolve(basePath, filename)

console.log(filePath);

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Informationen aus dem Pfad abrufen

  • dirname: Den übergeordneten Ordner der Datei abrufen
  • Basisname: Den Dateinamen abrufen
  • extname: Die Dateierweiterung abrufen
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));

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Pfadspleißen

Wenn wir mehrere Pfade verbinden möchten, verschiedene Betriebssysteme jedoch möglicherweise unterschiedliche Trennzeichen verwenden, können wir die Funktion path.join verwenden.

const path = require('path')

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

const filePath = path.join(basepath, filename)
console.log(filePath);

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Eine Datei und einen Ordner verbinden

Wenn wir eine Datei und einen Ordner verbinden möchten, können wir path.resolve verwenden.

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

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

path.resolve und path.join können auch zum Zusammenfügen von Pfaden verwendet werden. Was ist also der Unterschied?

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

Wir können den Unterschied sehen.

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

FS modul

nodeJS Die meisten Dateisystem -APIs mit Dateisystemen bieten drei Betriebsmethoden:

  • Synchronous -Dateioperation: Der Code wird blockiert und führt nicht weiterhin

  • asynchronous Callback -Funktionen aus Datei: Der Code wird nicht blockiert. Wenn das Ergebnis erhalten wird, führt die Callback-Funktion eine asynchrone Promise-Operation aus fs.promises gibt ein Promise zurück, das dann verarbeitet und abgefangen werden kann.

  • Dateistatus (Informationen) lesen

Methode eins synchroner Vorgang: fs.statSync
const fs = require('fs')

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

Methode zwei asynchroner Vorgang

fs.stat(filepath, (err, info) => {
  if(err) {
    console.log(err);
    return
  }
  console.log(info);
  console.log(info.isFile()); // 判断是否是一个文件
  console.log(info.isDirectory()); // 判断是否是一个文件夹
})
console.log('后续需要执行的代码');
Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-ModulMethode drei: Versprechen

fs.promises.stat(filepath).then(info => {
  console.log(info);
}).catch(err => {
  console.log(err);
})

console.log('后续需要执行的代码');

Dateideskriptor

Knotenzuweisungen ein NummerntypDateideskriptor

für alle geöffneten Dateien. Alle Dateisystemvorgänge verwenden diese Dateideskriptoren, um jede einzelne Datei zu identifizieren und zu verfolgen. Die Methode

fs.open() wird verwendet, um einen neuen Dateideskriptor fd zuzuweisen. Nach der Zuweisung kann der Dateideskriptor zum Lesen von Daten aus der Datei, zum Schreiben von Daten in die Datei oder zum Anfordern von Informationen über die Datei verwendet werden.

const fs = require('fs')

fs.open('./abc.txt', (err, fd) => {
  if(err) {
    console.log(err);
    return
  }

  // 通过文件描述符去获取文件信息
  fs.fstat(fd, (err, info) => {
    console.log(info);
  })
})
Lesen und Schreiben von Dateien

fs.readFile(path[, Optionen], Rückruf): Lesen Sie den Dateiinhalt

fs.writeFile(pfad[, Optionen], Rückruf): Schreiben Sie den Inhalt in die Datei

Optionsparameter:

Flag: Schreibmethode

Kodierung: Zeichenkodierung

Schreiben von Dateien

fs.writeFile('./abc.txt', content, {flag: "a"}, err => {
  console.log(err);
})

Lesen von Dateien

fs.readFile('./abc.txt', (err, data) => {
  console.log(data);
})

Wenn die Kodierung nicht ausgefüllt ist, wird der Ergebnispuffer (binär) zurückgegeben.

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

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Ordner erstellen

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

Verwenden Sie fs.mkdir() oder fs.mkdirSync, um einen neuen Ordner zu erstellen.

const fs = require('fs')

// 创建文件夹
const dirname = './haha'
if(!fs.existsSync(dirname)) {
  fs.mkdir(dirname, (err) => {
    console.log(err);
  })
}
Holen Sie sich den Inhalt des Ordners

fs.readdir

fs.readdir(dirname, (err, files) => {
  console.log(files);
})
Rufen Sie alle Dateien im Ordner ab. Zu diesem Zeitpunkt ist das Verzeichnis wie in der Abbildung unten gezeigt, und die Rekursion kann verwendet werden.

Eine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul

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 教程

Das obige ist der detaillierte Inhalt vonEine kurze Analyse gängiger Module im Knoten: Pfadmodul und FS-Modul. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen