Jedes Front-End-Kind weiß, dass JavaScript keine Berechtigung zum Betreiben von Festplattendateien hat, und Server-Kids haben es immer verachtet. Aber man kann sagen, dass Nodejs unser Front-End stolz macht. Ich habe kürzlich Node gelernt, und seine leistungsstarken Funktionen machen die Leute sehr aufgeregt. Heute habe ich gelernt, wie es Dateien liest und schreibt.
Zuerst müssen Sie das fs-Modul vorstellen, das mit nodejs geliefert wird.
var fs=require("fs");
Einzelheiten finden Sie in der Nodejs-API: http://www.w3cfuns.com/tools.php?mod=booknodejs
Es werden hauptsächlich zwei Methoden verwendet:
1. fs.readFile(filename, [encoding], [callback])
Dies ist das asynchrone Lesen von Dateien, Dateiname ist der Dateipfad, Kodierung ist das Kodierungsformat und Rückruf ist die Rückruffunktion.
Alle Inhalte einer Datei asynchron lesen, das Beispiel sieht wie folgt aus:
fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); });
Hier verwende ich eine lokale Testdatei:
function readFile(){ console.log('--------开始读取文件--------'); var fs = require('fs'); fs.readFile('test.txt', 'utf-8', function(err, data) { if (err) { console.log("读取失败"); } else { console.log(data); return data; } }); console.log('--------读取结束--------'); }
2. fs.writeFile(Dateiname, Daten, Kodierung='utf8', [Rückruf])
Datei schreiben:
function writeFile(data){ fs.writeFile("test2.txt",data,function(error){ if(error){ throw error; }else{ console.log("文件已保存"); } }); }
Fehlercode: Datei copyFile.js
var fs=require("fs"); function readFile(){ console.log('--------开始读取文件--------'); var fs = require('fs'); fs.readFile('test.txt', 'utf-8', function(err, data) { if (err) { console.log("读取失败"); } else { console.log(data); return data; } }); console.log('--------读取结束--------'); } function writeFile(data){ fs.writeFile("test2.txt",data,function(error){ if(error){ throw error; }else{ console.log("文件已保存"); } }); } function copyFile(){ var txt=readFile(); writeFile(txt); } copyFile();
Das Ergebnis der Ausführung von node copyFile.js im Terminal ist wie folgt:
Hinweis:
1. Zu Beginn habe ich direkt ein neues TXT-Dokument erstellt. Als ich es gelesen habe, stellte sich heraus, dass es beim Öffnen mit dem Editor verstümmelt war. Zweitens ist es am besten, die Codierung mitzubringen, da sonst entsprechend dem Puffer gelesen wird.
2. Synchrones Ausführungsproblem.
Es gibt ein Problem mit dem obigen Code. Ich habe die Dateilese- und -schreibmethoden ursprünglich in test2.txt kopiert, aber das Lesen der Datei erfolgt asynchron Das heißt, niemand weiß, wann es ausgeführt wird, daher ist das Ergebnis von test.txt undefiniert.
Die richtige Methode sollte darin bestehen, die Datei nach dem Lesen zu schreiben:
var fs=require("fs"); function copyFile(){ console.log('--------开始读取文件--------'); var fs = require('fs'); fs.readFile('test.txt', 'utf-8', function(err, data) { if (err) { console.log("读取失败"); } else { writeFile(data) return data; } }); console.log('--------读取结束--------'); } function writeFile(data){ console.log(data); fs.writeFile("test2.txt",data,'utf8',function(error){ if(error){ throw error; }else{ console.log("文件已保存"); } }); } copyFile();
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.