Maison  >  Article  >  interface Web  >  Opérations du système de fichiers Node.js

Opérations du système de fichiers Node.js

php中世界最好的语言
php中世界最好的语言original
2018-04-18 15:16:381600parcourir

Cette fois, je vais vous présenter le fonctionnement du système de fichiers Node.js, quelles sont les précautions pour le fonctionnement du système de fichiers Node.js, ce qui suit est un cas pratique, prenons un regarder.

1. Méthodes synchrones et méthodes asynchrones

Dans Node.js, utilisez le module fs pour implémenter toutes les opérations associées de création, d'écriture et de suppression de fichiers et de répertoires. , dans le module fs, toutes les opérations sur les fichiers et répertoires peuvent utiliser des méthodes synchrones et asynchrones. La différence entre les deux est la suivante : la méthode de synchronisation renvoie le résultat de l'opération immédiatement et le code suivant ne peut pas être exécuté avant que l'opération effectuée à l'aide de la méthode de synchronisation ne soit terminée. Le code est similaire au suivant :

Var fs = require('fs')
var data = fs.readFileSysnc('./index.html','utf8')
//等待操作返回结果,然后利用该结果
console.log(data)

. La méthode asynchrone renvoie le résultat de l'opération en paramètre de la fonction de rappel Après l'appel de la méthode, le code suivant peut être exécuté immédiatement :

var fs = require('fs')
fs.readFile('./index.html','utf8'.function(err,data){
  //操作结果作为回调函数的第二个参数返回
  console.log(data)
})

. De plus, lorsque plusieurs méthodes asynchrones sont appelées à l'aide de la méthode présentée ci-dessous, l'ordre de retour des résultats de l'opération n'est pas garanti

fs.readFile('./file.html',function(err,data){
  //回调函数代码
  })
fs.readFile('./otrher.html',function(err,data){
  //回调函数代码
  })

Dans le code ci-dessus, nous effectuons des opérations de lecture sur deux fichiers en même temps, mais nous ne garantissons pas quel résultat de l'opération est renvoyé en premier. Si nous voulons nous assurer que deux fichiers sont lus après la lecture d'une citation, nous devons utiliser la méthode suivante :

fs.readFileSync('./file.html',function(err,data){
  //回调函数代码
  })
fs.readFileSync('./otrher.html',function(err,data){
  //回调函数代码
  })

2. Effectuez des opérations de lecture et d'écriture sur les fichiers

2.1 Lecture et écriture complètes des fichiers

Vous pouvez utiliser la méthode readFile ou la méthode readFileSync pour lire un fichier dans son intégralité :

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){
  //回调函数代码略
}
//第一个参数为读取文件操作失败时触发的错误对象
第二个参数值为读取到的文件内容

Lors de la lecture d'un fichier en utilisant la méthode synchrone, utilisez la méthode readFileSync :

var data = fs.readFileSync(filename,[options])

par exemple :

var fs = require('fs')
try{
  var data = fs.readFileSync('./text.txt','utf8')
  //在控制台中输出文件内容
  console.log(data) 
}catch(ex){
  console.log('读取文件时发生错误')
}

Lors de l'écriture complète d'un fichier, utilisez la méthode writeFile ou la méthode writeFileSync dans le module fs

fs.writeFile(filename,datda,[options],callback)
//第一个参数:用于指定被写入文件的完整文件路径及文件名
第二个参数:用于指定需要写入的内容,参会素可以为一个字符串或一个Buffer对象
第三个参数:指定写入文件时需要的选项
    flag属性:用于指定该文件采用何种操作,默认为'w'
    mode属性:指定当文件被打开时对文件的读写权限,默认为0666(可读写),第一位必须为0,第二位用于规定文件或目录所有者的权限,第三位为文件或目录所属用户组的权限,第四位为其他用户权限
      1:执行权限
      2:写权限
      4:读权限
    encoding属性:指定使用何种编码格式来写入文件,:utf8 ascii base64
    
callback(err){
  //回调函数代码
}

Lors de l'écriture de fichiers de manière synchrone, utilisez la méthode writeFileSync :

fs.writeFileSync(filename,data,[options])

Lorsque vous ajoutez une chaîne ou des données dans un tampon au bas d'un fichier, vous pouvez utiliser la méthode appendFile ou appendFildSync dans le module fs

fs.appendFile(filname,data,[options],callback)
fs.appendFileSync(filename,data[options])

2.2 Commencez à lire et à écrire des fichiers à partir de l'emplacement spécifié

Tout d'abord, vous devez utiliser la méthode open ou la méthode openSync dans le module fs pour ouvrir le fichier,

fs.open(filename,flags,[mode],callback)
其中callback参数为:function(err,fd){
            //回调函数代码
          }
//第一个参数为打开文件操作失败时所触发的错误对象,
第二个参数为一个整数值,代表打开文件时返回的文件描述符

Lors de l'ouverture d'un fichier de manière synchrone, utilisez la méthode openSync :

var fd = fs.openSync(filename,flag,[mode])

Après avoir ouvert le fichier, vous pouvez utiliser la méthode read ou la méthode readSync dans le module fs dans la fonction de rappel pour lire le fichier à partir de l'emplacement spécifié du fichier, ou vous pouvez utiliser la méthode write ou la méthode writeSync dans le module fs pour démarrer écrire à partir de l'emplacement spécifié du fichier Data

Présentez d'abord la méthode de lecture :

fs.read(fd,buffer,offset,length,position,callback)
//第一个参数:open方法所所使用的回调函数中返回的文件描述符或openSync方法返回的文件描述符;
第二个参数:英语指定将文件数据读取到哪个缓存区;
第三个参数:整数,用于指定向缓存区中写入数据时的开始位置,以字节为单位
第四个参数:整数,指定从文件中读取的字节数
第五个参数:整数,指定读取文件时开始位置
callback(err,bytesRead,buffer){
  //回调函数代码
}
err:读取文件操作失败时触发的错误对象
bytesRead实际读取的字节数
buffer:被读取的缓存区对象

Lors de l'ouverture d'un fichier de manière synchrone, utilisez la méthode readSync :

var byteRead = fs.readSync(fd,buffer,offset,length,position)

Après avoir ouvert le fichier, utilisez la méthode write ou la méthode writeSync dans le module fs pour lire les données d'un tampon et commencer à ingérer les données à partir du point spécifié dans le fichier

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

Lors de l'écriture de fichiers de manière synchrone, utilisez la méthode writeSync

fs.writeSync(fd,buffer,offset,length,position)

Dans le module fs, utilisez la méthode close et la méthode closeSync pour fermer le fichier

fs.close(fd,[callbcak])
fs.closeSync(fd)

Avant d'appeler la méthode close, vous pouvez utiliser la méthode fsyn pour écrire tout le contenu de la zone tampon dans le fichier afin d'éviter les données manquantes

fs.fsyn(fd,[callback])

Veuillez faire attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Combinaison de balises HTML avec des nœuds DOM


Résumé de la conversion de type implicite JS


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn