Dieses Mal werde ich Ihnen den Betrieb des Node.js Dateisystems vorstellen. Was sind die Vorsichtsmaßnahmen für den Betrieb des Node.js-Dateisystems? Das Folgende ist ein praktischer Fall, nehmen wir einen sehen.
1. Synchrone Methoden und asynchrone Methoden
Verwenden Sie in Node.js das fs-Modul, um alle zugehörigen Vorgänge zum Erstellen, Schreiben und Löschen von Dateien und Verzeichnissen zu implementieren. Im fs-Modul können alle Vorgänge an Dateien und Verzeichnissen sowohl synchrone als auch asynchrone Methoden verwenden. Der Unterschied zwischen den beiden besteht darin, dass die Synchronisierungsmethode das Operationsergebnis sofort zurückgibt und nachfolgender Code nicht ausgeführt werden kann, bevor die mit der Synchronisierungsmethode ausgeführte Operation abgeschlossen ist. Der Code ähnelt dem folgenden:
Var fs = require('fs') var data = fs.readFileSysnc('./index.html','utf8') //等待操作返回结果,然后利用该结果 console.log(data)
Die asynchrone Methode gibt das Operationsergebnis als Parameter der Callback-Funktion zurück. Nach dem Methodenaufruf kann der nachfolgende Code wie folgt ausgeführt werden:
var fs = require('fs') fs.readFile('./index.html','utf8'.function(err,data){ //操作结果作为回调函数的第二个参数返回 console.log(data) })
Wenn außerdem mehrere asynchrone Methoden mit der unten gezeigten Methode aufgerufen werden, ist die Rückgabereihenfolge der Operationsergebnisse nicht garantiert
fs.readFile('./file.html',function(err,data){ //回调函数代码 }) fs.readFile('./otrher.html',function(err,data){ //回调函数代码 })
Im obigen Code führen wir Lesevorgänge für zwei Dateien gleichzeitig durch, stellen jedoch nicht sicher, welches Vorgangsergebnis zuerst zurückgegeben wird. Wenn wir sicherstellen möchten, dass zwei Dateien gelesen werden, nachdem ein Zitat gelesen wurde, sollten wir die folgende Methode verwenden:
fs.readFileSync('./file.html',function(err,data){ //回调函数代码 }) fs.readFileSync('./otrher.html',function(err,data){ //回调函数代码 })
2. Führen Sie Lese- und Schreibvorgänge für Dateien durch
2.1 Vollständiges Lesen und Schreiben von Dateien
Sie können die Methode readFile oder die Methode readFileSync verwenden, um eine Datei vollständig zu lesen:
fs.readFile(filename,[options],callback) //第一个参数:必选指定读取文件的完整文件路径及文件名 第二个参数:指定读取文件时需要使用的选项,在该参数值对象中可以使用flag属性指定对该文件采取什么操作,默认为‘r' option: flag'r':读取文件,如果文件不存在则抛出异常 'r+':读取并写入文件,如果文件不存在则抛出异常 'rs':以同步方式读取文件并通知操作系统忽略本地文件系统缓存,如果文件不存在则抛出异常。因为本属性值忽略本地缓存,适用于操作网络文件系统,但由于其对性能产生一定的负面影响,不建议在其他环境下使用 'w':写入文件,如果文件不存在则创建文件,如果文件存在则清空文件内容 'wx':作用与'w'类似,但以排他方式写入文件 'w+':读取并写入文件。如果不存在则创建文件,如果该文件已存在则清空文件内容 'wx+':作用与'w+'类似,但是以排他方式写入文件 'a':追加写入文件,如果文件不存在则创建文件 'ax':作用与'a+'类似,但是以排他方式打开文件 encoding: utf8,ascii,base64, callback(err,data){ //回调函数代码略 } //第一个参数为读取文件操作失败时触发的错误对象 第二个参数值为读取到的文件内容
Wenn Sie eine Datei mit der synchronen Methode lesen, verwenden Sie die readFileSync-Methode:
var data = fs.readFileSync(filename,[options])
zB:
var fs = require('fs') try{ var data = fs.readFileSync('./text.txt','utf8') //在控制台中输出文件内容 console.log(data) }catch(ex){ console.log('读取文件时发生错误') }
Wenn Sie eine Datei vollständig schreiben, verwenden Sie die Methode writeFile oder writeFileSync im fs-Modul
fs.writeFile(filename,datda,[options],callback) //第一个参数:用于指定被写入文件的完整文件路径及文件名 第二个参数:用于指定需要写入的内容,参会素可以为一个字符串或一个Buffer对象 第三个参数:指定写入文件时需要的选项 flag属性:用于指定该文件采用何种操作,默认为'w' mode属性:指定当文件被打开时对文件的读写权限,默认为0666(可读写),第一位必须为0,第二位用于规定文件或目录所有者的权限,第三位为文件或目录所属用户组的权限,第四位为其他用户权限 1:执行权限 2:写权限 4:读权限 encoding属性:指定使用何种编码格式来写入文件,:utf8 ascii base64 callback(err){ //回调函数代码 }
Verwenden Sie beim synchronen Schreiben von Dateien die Methode writeFileSync:
fs.writeFileSync(filename,data,[options])
Wenn Sie eine Zeichenfolge oder Daten in einem Puffer an das Ende einer Datei anhängen, können Sie die Methode appendFile oder appendFildSync im fs-Modul
fs.appendFile(filname,data,[options],callback) fs.appendFileSync(filename,data[options])
verwenden 2.2 Beginnen Sie mit dem Lesen und Schreiben von Dateien vom angegebenen Speicherort
Zuerst müssen Sie die open-Methode oder die openSync-Methode im fs-Modul verwenden, um die Datei
fs.open(filename,flags,[mode],callback) 其中callback参数为:function(err,fd){ //回调函数代码 } //第一个参数为打开文件操作失败时所触发的错误对象, 第二个参数为一个整数值,代表打开文件时返回的文件描述符
zu öffnen Wenn Sie eine Datei synchron öffnen, verwenden Sie die openSync-Methode:
var fd = fs.openSync(filename,flag,[mode])
Nach dem Öffnen der Datei können Sie die Lesemethode oder die readSync-Methode im fs-Modul in der Rückruffunktion verwenden, um die Datei vom angegebenen Speicherort der Datei zu lesen, oder Sie können zum Starten die Schreibmethode oder die writeSync-Methode im fs-Modul verwenden Schreiben vom angegebenen Speicherort der Datei
Stellen Sie zunächst die Lesemethode vor:
fs.read(fd,buffer,offset,length,position,callback) //第一个参数:open方法所所使用的回调函数中返回的文件描述符或openSync方法返回的文件描述符; 第二个参数:英语指定将文件数据读取到哪个缓存区; 第三个参数:整数,用于指定向缓存区中写入数据时的开始位置,以字节为单位 第四个参数:整数,指定从文件中读取的字节数 第五个参数:整数,指定读取文件时开始位置 callback(err,bytesRead,buffer){ //回调函数代码 } err:读取文件操作失败时触发的错误对象 bytesRead实际读取的字节数 buffer:被读取的缓存区对象
Wenn Sie eine Datei synchron öffnen, verwenden Sie die readSync-Methode:
var byteRead = fs.readSync(fd,buffer,offset,length,position)
Verwenden Sie nach dem Öffnen der Datei die Methode write oder writeSync im fs-Modul, um Daten aus einem Puffer zu lesen und mit der Aufnahme der Daten ab dem angegebenen Punkt in der Datei zu beginnen
fs.write(fd,buffer,offset,length,position,callback) 其中callback为function(err,written,buffer){ //回调函数代码 } eg: 1 var fs = require('fs') 2 var buf = new Buffer('我喜欢编程') 3 fs.open('./message.txt','w',function(err,fd){ 4 fs.write(fd,buf,3,9,0,function(err,written,buffer){ 5 if(err)console.log("写文件操作失败") 6 console.log("写文件操作成功") 7 }) 8 })
Wenn Sie Dateien synchron schreiben, verwenden Sie die writeSync-Methode
fs.writeSync(fd,buffer,offset,length,position)
Verwenden Sie im fs-Modul die close-Methode und die closeSync-Methode, um die Datei
fs.close(fd,[callbcak]) fs.closeSync(fd)
zu schließen Bevor Sie die Methode close aufrufen, können Sie mit der Methode fsyn den gesamten Inhalt des Pufferbereichs in die Datei schreiben, um fehlende Daten zu vermeiden
fs.fsyn(fd,[callback])
Bitte beachten Sie andere verwandte Artikel auf der chinesischen PHP-Website!
Empfohlene Lektüre:
HTML-Tags mit DOM-Knoten kombinierenZusammenfassung der impliziten JS-TypkonvertierungDas obige ist der detaillierte Inhalt vonNode.js-Dateisystemoperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!