当前位置: 首页 > Web前端 > HTML5

Node.js学习之路05-fs文件系统中文件的读写

时间:2023-04-05 20:10:19 HTML5

fs文件系统在Node.js中,提供了一个fs模块来实现文件和目录的读写操作。1.同步和异步方法一般情况下都是用异步方法读取文件,但是在读取系统配置文件时,应该使用同步方法2.普通文件写入和读取2.1文件写入2.1.1写入输入一段基本文本file如果没有可写入的文件,会自动创建一个文件晚上的广播采访。';fs.writeFile('./writeFile.txt',writeData,'utf-8',function(err){if(err){console.log('有错误发生~');}else{console.log('写入成功~~');}});2.1.2拷贝图片和各种二进制文件(以图片文件为例)里面有一个图片文件fileImage.jpgconstfs=要求('FS');fs.readFile('./fileImage.jpg','base64',function(err,data){if(err){console.log('读取图片失败,请检查错误');}else{fs.writeFile('./fileImageCopy.jpg',data,'base64',function(err){if(err){console.log('复制图片文件失败');}else{console.log('复制图片文件成功');}});}});2.2文件读取2.2.1文件异步读取时上一个目录下有一个readFile.txt文件,文件内容是hello,这是一个读取文件txt.constfs=require('fs');fs.readFile('./readFile.txt','utf-8',function(err,data){if(err){console.log('读取文件错误',err);}else{console.log('dataAsync');console.log(data);}});/***dataAsync*你好,这是一个读取文件txt。***/2.2.2文件同步读取constfs=require('fs');letdataSync=fs.readFileSync('./readFile.txt','utf-8');console.log('dataSync');console.log(dataSync);/***dataSync*你好,这是一个读取文件txt。***/3。追加数据3.1到文本文件同步追加数据constfs=require('fs');constappendFileContent='这是appendFileContent框';fs.appendFileSync('./appendFile.txt',appendFileContent,'utf-8');3.2异步追加到文本文件数据的原始内容appendFile.txt你好,这是一个基本的追加txt文件。-constfs=require('fs');constappendFileContent='thisisappendFileContentbox';fs.appendFile('./appendFile.txt',appendFileContent,'utf-8',function(err){if(err){console.log('追加文件操作失败');}else{fs.readFile('./appendFile.txt','utf-8',function(err,data){if(err){console.log('追加成功,读取失败');}else{console.log('追加成功,读取成功');console.log(data);}});}});/***添加成功,读取操作成功*你好,这是一个基本的附加txt文件。**-这是appendFileContent框***/4。文件的打开和关闭fd表示打开文件时返回的文件描述符。在Windows操作系统中,文件描述符也称为文件句柄4.1异步打开文件constfs=require('fs');fs.open('./openFile.txt','r',(err,fd)=>{if(err){console.log('打开文件wrong',err);}else{console.log('open');console.log(fd);}});/***open*3***/4.2同步打开文件constfs=require('fs');letopenSync=fs.openSync('./openFile.txt','r');console.log('openSync');console.log(fd);fs.closeSync(fd);//sync关闭文件/***openSync*3***/5.当fs的fs.write和fs.read使用write方法或者writeSync方法向文件写入数据时,操作系统的做法是先读取部分数据,当数据被读取时,并不代表数据已经写入了,因为还有一部分可能会残留在内存缓冲区中。如果此时调用close或者closeSync方法关闭文件,那么这部分数据就会丢失。这时可以使用fs模块中的fsync方法来同步文件,即将内存缓冲区中剩余的数据全部写入到文件中。5.1文件写入当前目录下有一个write.txt文件,文件内容是我喜欢编程5.1.1异步写入的一种底层写入方式。您可以使用fs.write从指定位置写入数据。需要先打开文件,根据文件资源句柄写入内容fs.write(fd,buffer,offset,length,position,callback(err,written,buffer))constfs=require('fs');letbuf=newBuffer('我喜欢编程');fs.open('./write.txt','w',function(err,fd){if(err){console.log('打开文件错误',err);}else{fs.write(fd,buf,3,9,0,function(err,written,buffer){if(err){console.log('写文件操作失败');}else{console.log('写文件操作成功');console.log(buffer.toString());}});}});/***写文件操作成功*我喜欢编程***/5.1.2同步写入fs.writeSync(fd,buffer,offset,length,position)constfs=require('fs');letbuf=newBuffer('我喜欢编程');fs.open('./write.txt','w',function(err,fd){if(err){console.log('打开文件错误',err);}else{fs.writeSync(fd,buf,3,9,0);}});5.2文件读取当前目录下有一个open.txt文件,文件内容是我喜欢编程5.2.1同步读取fs.readSync(fd,buffer,偏移量、长度、位置、回调)constfs=require('fs');fs.open('./open.txt','r',function(err,fd){varbuf=newBuffer(255).fill(0);varbytesRead=fs.readSync(fd,buf,0,9,3);console.log(bytesRead);//9console.log(buf.slice(0,bytesRead).toString());//类似编辑});5.2.2异步读取fs.read(fd,buffer,offset,length,position,callback(err,bytesRead,buffer))constfs=require('fs');fs.open('./open.txt','r',function(err,fd){letbuf=newBuffer(255).fill(0);//存储区fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){console.log(buffer.slice(0,bytesRead).toString());//喜欢编辑});});fs.open('./open.txt','r',function(err,fd){letbuf=newBuffer(255).fill(0);//存储区fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){console.log(buffer.slice(0,bytesRead).toString());//喜欢编辑fs.read(fd,buf,0,3,null,function(err,bytesRead,buffer){console.log(buffer.slice(0,bytesRead).toString());//程序});});});