在Node.js中,我们可以使用fs(FileSystem)模块来操作文件。文件系统模块有同步和异步两种不同的方法。同步和异步方法Node.js文件系统模块中的方法有异步和同步两种版本。例如,可以使用fs.readFileSync()方法同步读取文件内容,使用fs.readFile()方法异步读取文件内容。异步方法函数的最后一个参数是回调函数,回调函数的第一个参数包含错误信息。在大型系统中,我们一般使用异步方式,因为同步方式很容易导致进程被锁住。因此与同步方法相比,异步方法性能更高、速度更快且非阻塞。例子:假设有一个test.txt文件,文件内容如下:学习网络工作技能,做英雄!同步读取文件我们使用同步的方式读取上面文件的内容,创建一个名为synchronization.js的文件,文件内容如下,使用readFileSync()方法读取内容:varfs=require("fs");vardata=fs.readFileSync('test.txt');console.log("同步读取的文件内容为:\n"+data.toString());console.log("programisexecuted");启动这个Node.js文件,就会成功读取文件中的内容,如下图:>nodesynchronization.js同步读取文件内容为:学习互联网工作技能,大师班孤岛!程序执行后,异步读取文件。使用异步方式读取test.txt文件的内容。我们只需要将readFileSync()方法替换为readFile()方法即可。创建一个名为asynchronous.js的文件。文件内容如下。使用readFile()方法时,注意第二个参数是回调函数,包含错误信息:varfs=require("fs")fs.readFile('test.txt',function(err,data){if(err){returnconsole.error(err);}console.log("异步读取文件内容:\n"+data.toString());});console.log("程序执行完毕");启动这个文件,会输出如下内容:>nodeasynchronous.英雄岛!文件系统模块的使用要使用文件系统模块fs,首先需要使用require()方法导入该模块。这个我们之前已经讲过好几次了,语法如下:varfs=require('fs');导入该模块后,我们就可以使用该模块实现打开文件、读取文件、写入文件、关闭文件等操作。打开文件操作异步方式打开文件的语法如下:fs.open(path,flags[,mode],callback)path:文件路径。标志:文件打开行为。模式:文件模式。callback:回调函数,有两个参数:err和fd。示例:varfs=require("fs");console.log("准备打开文件")fs.open('test.txt','r+',function(err,fd){if(err){returnconsole.error(err);}console.log("文件打开成功!");});启动该文件后,成功会输出如下内容:>nodeopenfile.jsisreadytoopenthefile文件打开成功!异步方式读取文件的语法为:fs.read(fd,buffer,offset,length,position,callback)fd:文件描述符。buffer:写入数据的缓冲区。offset:缓冲区写入的写入偏移量。length:要从文件中读取的字节数。position:读取文件的起始位置,如果值为null,则从当前文件指针位置开始读取。callback:回调函数,三个参数:err错误信息、bytesRead读取的字节数、buffer缓冲对象。示例:varfs=require("fs");varbuf=newBuffer.alloc(1024);console.log("准备打开文件");fs.open('test.txt','r+',function(err,fd){if(err){returnconsole.error(err);}console.log("文件打开成功!\n");console.log("开始读取文件!");fs.read(fd,buf,0,buf.length,0,function(err,bytes){if(err){console.log(err);}console.log("总共"+bytes+"字节被读取");if(bytes>0){console.log("Read:"+"\n"+buf.slice(0,bytes).toString());}});});start如果这个文件输出如下内容,说明读取文件操作成功:>nodereadfile.js准备打开文件,文件打开成功!开始阅读文件!共阅读42字节,阅读内容为:学习网络工作技能,做英雄!在异步模式下写入文件的语法是:fs.writeFile(file,data[,options],callback)file:文件名或文件描述符。data:要写入文件的数据,可以是String(字符串)或Buffer(缓冲区)对象。options:这个参数是一个包含{encoding,mode,flag}的对象。默认编码为utf8,模式为0666,标志为'w'。callback:回调函数,回调函数只包含错误信息参数(err),写入失败时返回。示例:varfs=require("fs");console.log("准备写入文件");fs.writeFile('write.txt','这里是要写入的数据内容',function(err){if(err){returnconsole.error(err);}console.log("数据写入成功!");});启动文件,write.txt中的内容写入成功:>nodewritefile.jsisreadytowrite文件数据写入成功!在异步模式下关闭文件的语法是:fs.close(fd,callback)fd:fs.open()方法返回的文件描述符。callback:回调函数,无参数。示例:varfs=require("fs");console.log("准备打开文件")fs.open('test.txt','r+',function(err,fd){if(err){returnconsole.error(err);}console.log("文件打开成功!\n");//关闭文件console.log("准备关闭文件");fs.close(fd,function(err){if(err){console.log(err);}console.log('文件关闭成功!');});});启动文件:>nodeclose.js准备打开文件文件打开成功!准备关闭文件文件关闭成功!文件模块方法参考手册方法说明fs.rename(oldPath,newPath,callback)异步rename(),回调函数没有参数,但可能抛出异常fs.ftruncate(fd,len,callback)异步ftruncate(),回调函数没有参数,但可能抛出异常len)synchronoustruncate()fs.chown(path,uid,gid,callback)异步chown(),回调函数没有参数,但可能抛出异常fs.chownSync(path,uid,gid)synchronouschown()fs.fchown(fd,uid,gid,callback)异步fchown(),回调函数没有参数,但可能抛出异常fs.fchownSync(fd,uid,gid)synchronousfchown()fs.lchown(path,uid,gid,callback)异步lchown(),回调函数没有参数,但可能抛出异常fs.lchownSync(path,uid,gid)同步lchown()fs.chmod(小路,mode,callback)异步chmod(),回调函数没有参数,但可能抛出异常fs.chmodSync(path,mode)同步chmod()fs.fchmod(fd,mode,callback)异步fchmod(),回调函数没有参数,但可能抛出异常fs.fchmodSync(fd,mode)同步fchmod()fs.lchmod(path,mode,callback)异步lchmod()。回调函数没有参数,但可能会抛出异常。仅适用于MacOSXfs.lchmodSync(path,mode)同步lchmod()fs.stat(path,callback)异步stat()。回调函数有两个参数err、stats,stats是fs.Stats对象fs.lstat(path,callback)异步lstat()。回调函数有两个参数err,stats,stats是fs.Stats对象fs.fstat(fd,callback)异步fstat()。回调函数有两个参数err、stats,stats是fs.Stats对象fs.statSync(path)同步stat()。返回fs.Stats的实例fs.lstatSync(path)同步lstat()。返回fs.Stats的实例fs.fstatSync(fd)同步fstat()。返回fs.Stats的实例fs.link(srcpath,dstpath,callback)异步link()。回调函数没有参数,但可能抛出异常fs.linkSync(srcpath,dstpath)synchronouslink()fs.symlink(srcpath,dstpath[,type],callback)asynchronoussymlink()。回调函数没有参数,但可能会抛出异常。类型参数可以设置为“dir”、“file”或“junction”(默认为“file”)fs.symlinkSync(srcpath,dstpath[,type])synchronoussymlink().fs.readlink(path,callback)异步读取链接()。回调函数有两个参数err,linkStringfs.realpath(path[,cache],callback)异步realpath()。回调函数有两个参数err,resolvedPathfs.realpathSync(path[,cache])同步realpath()。返回绝对路径fs.unlink(path,callback)异步unlink(),回调函数无参数,但可能抛出异常fs.unlinkSync(path)同步unlink().fs.rmdir(path,callback)异步rmdir(),回??调函数没有参数,但可能会抛出异常。访问权限默认为0777fs.mkdirSync(path[,mode])synchronousmkdir().fs.readdir(path,callback)asynchronousreaddir(3),读取目录内容fs.readdirSync(path)synchronousreaddir(),fileArrayListfs.close(fd,callback)异步close(),回调函数没有参数,但可能抛出异常fs.closeSync(fd)同步close().fs.open(path,flags[,mode],callback)异步打开文件。fs.openSync(path,flags[,mode])同步fs.open()的版本。fs.utimes(path,atime,mtime,callback)fs.utimesSync(path,atime,mtime)修改文件时间戳,并且文件通过指定的文件路径。fs.futimes(fd,atime,mtime,callback)fs.futimesSync(fd,atime,mtime)修改文件时间戳,由文件描述符指定。fs.fsync(fd,callback)异步同步。回调函数没有参数,但可能会抛出异常。fs.fsyncSync(fd)同步fsync.fs.write(fd,buffer,offset,length[,position],callback)将缓冲区的内容写入文件描述符指定的文件。fs.write(fd,data[,position[,encoding]],callback)通过文件描述符fd写入文件内容。fs.writeSync(fd,buffer,offset,length[,position])fs.write()的同步版本。fs.writeSync(fd,data[,position[,encoding]])同步版本的fs.write().fs.read(fd,buffer,offset,length,position,callback)通过文件描述符读取文件内容fd。fs.readSync(fd,buffer,offset,length,position)fs.read.fs.readFile(filename[,options],callback)的同步版本异步读取文件内容。fs.readFileSync(filename[,options])fs.writeFile(filename,data[,options],callback)异步写入文件内容。fs.writeFileSync(filename,data[,options])fs.writeFile的同步版本。fs.appendFile(filename,data[,options],callback)异步追加文件内容。fs.appendFileSync(filename,data[,options])fs.appendFile.fs.watchFile(filename[,options],listener)的同步版本监视文件修改。fs.unwatchFile(filename[,listener])停止监视文件名的修改。fs.watch(filename[](#))查看filename的修改,filename可以是文件也可以是目录。返回一个fs.FSWatcher对象。fs.exists(path,callback)检查给定路径是否存在。fs.existsSync(path)的同步版本fs.exists.fs.access(path[,mode],callback)测试指定路径的用户权限。fs.accessSync(path[,mode])fs.access的同步版本。fs.createReadStream(path[,options])返回一个ReadStream对象。fs.createWriteStream(path[,options])返回一个WriteStream对象。fs.symlink(srcpath,dstpath[,type],callback)异步符号链接()。回调函数没有参数,但可能会抛出异常。更多可以查看:https://www.9xkd.com/3716132715.html
