Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

青灯夜游
青灯夜游nach vorne
2021-06-22 10:29:202313Durchsuche

Dieser Artikel führt Sie durch die NodejsDateioperationen fs.mkdir und fs.rmdir. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

【Empfohlenes Lernen: „nodejs-Tutorial“】

fs.mkdir-Dateiverzeichnis wurde hinzugefügt

Fallverwendung

  • Das hinzugefügte Verzeichnis wird Schritt für Schritt erfolgreich gedruckt. Erfolg
fs.mkdir("a", function (err) {
    // 当a不存在的时候直接创建 a/b会报错
 if (err) {
    console.log(err);
    return;
  }
  console.log("success...");//success
});
  • Beim Hinzufügen eines neuen Verzeichnisses zu einem Verzeichnis, das nicht über Ebenen hinweg existiert, ist ein Fehler aufgetreten! ! , das integrierte Modul des Knotens selbst unterstützt das Hinzufügen von Verzeichnissen unter nicht vorhandenen Verzeichnissen nicht (das möchte ich tun)

Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

Erweiterte Version von fs.mkdir

rekursive Version

Denken

  • Schneiden Sie den hinzuzufügenden Pfad gemäß „/“ ab, um einen Array-Cache zu generieren. '/') Nach dem Abfangen wird in der Pfadzeichenfolge currentPath

  • fs.stat verwendet, um den Status der Datei zu beschreiben. Wenn die Datei nicht vorhanden ist, tritt ein Fehler auf

  • Ein Fehler ist am Vortag aufgetreten und wurde aufgerufen fs.mkdir (currentPath, nennen

  • for-Schleife + Version abwarten
  • Implementierungsideen

Verwenden Sie „/“ als Basis, um den Pfad in das entsprechende Array zu schneiden, und durchlaufen Sie das Array mit einer for-Schleife

Das existiertSync( ) in der for-Schleife verwendet eine synchrone Methode, um zu erkennen, ob das Verzeichnis vorhanden ist.

 Wenn das Verzeichnis existiert, geben Sie true zurück, wenn das Verzeichnis nicht existiert, geben Sie false zurück 3. Es gibt keinen Implementierungscode für fs.mkdir (aktueller Pfad). Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

FallverwendungEine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

Löschen Sie fs.rmdir direkt in einem Verzeichnis mit Unterverzeichnissen
function mkdir(pathStr, cb) {
  let pathList = pathStr.split("/");
  // 递归调用fs.mkdir
  let index = 1;
  function make(err) {
    if (err) return cb(err);
    if (index === pathList.length + 1) return cb();
    //每次 调用要将上次的已经生成的文件名做下次的目标文件,
    // 所以 slice(0, index) 第二参数也要 累加
    //slice(0, index) 截取后join('/')  成字符串
    let currentPath = pathList.slice(0, index++).join("/");
    // console.log("pathList.slice(0,index)", pathList.slice(0, index));
    fs.stat(currentPath, function (err) {
      if (err) {
        fs.mkdir(currentPath, make);
        console.log({ currentPath });
        // 如果不存在,再创建  fs.mkdir(currentPath, make);
      } else {
        make();
      }
    });
  }
  make();
}
Verwendungsergebnis (Fehlerbericht)

  • fs.rmdir erweiterte Version

  • Serielle Version

Idee

fs.stat gibt die spezifischen Informationen der Datei zurück: Dateistatus-Dateiinformationen, Änderungszeit, Erstellungszeit, Verzeichnisstatus; der zweite Parameter im Rückruf von fs.stat dient zum Abrufen des Dateiobjekts, der Objektmethode: isFile, isDirectory

isFile direkt fs.unlink(dir, cb); löscht die aktuelle Datei

Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

isDirectory ruft fs.readdir auf, um ein Array von Unterverzeichnissen zurückzugeben Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul

map durchläuft das Unterverzeichnis-Array und den Namen der übergeordneten Datei + Namen der Unterdatei splicing path.join(dir, item))

Rufen Sie sich nacheinander rekursiv auf dem gespleißten Pfad-Array auf

Löschen Sie alle Unterverzeichnisse und löschen Sie sich dann selbst

Eine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-DateimodulCode-Implementierung

mkdir("a/b/c/d", function (err) {
  if (err) console.log(err);
   console.log("success...");
});

Test
const fs = require("fs").promises; //node11后可以直接.promises
const { existsSync } = require("fs");
async function mkdir(pathStr, cb) {
  let pathList = pathStr.split("/");
  for (let i = 1; i <= pathList.length; i++) {
    let currentPath = pathList.slice(0, i).join("/");
    if (!existsSync(currentPath)) {
      await fs.mkdir(currentPath);
    }
  }
}
Ergebnisse der Ausführung ial-Verständnis in einen einzigen Thread entsprechend dem oben genannten Nur Nachdem eine Ausführung abgeschlossen ist, kann die nächste ausgeführt werden. Parallele, asynchrone Ausführung, keine Abhängigkeiten voneinander Dann ist Letzteres effizienter als Ersteres

Die Essenz von Dateiverzeichnisoperationen

    Die Essenz von Dateiverzeichnissen: Es handelt sich um baumstrukturierte Daten
  • Die Operationen von Dateiverzeichnissen basieren auf Baum- Betrieb mit strukturierten Daten
  • Lassen Sie beim nächsten Mal eine Lücke zum Schreiben
  • Verstehen der Baumstruktur

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierunterricht! !

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über fs.mkdir und fs.rmdir im Nodejs-Dateimodul. 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