[Nodejs] node的 fs 模块

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API。 Node 导入文件系统模块(fs)。Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。***使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞(重点)。对于流量较大的服务器,***还是采用异步操作,同步操作时,只有前一个操作结束,才会开始后一个操作,如果某个操作特别耗时(常常发生在读写数据时),会导致整个程序停顿

常用方法 操作 异步方法 同步方法
打开文件   fs.open(path, flags[, mode], callback)   fs.openSync(path, flags[, mode])  
文件信息   fs.stat(path[, options], callback)   fs.statSync(path[, options])  
新建文件   fs.appendFile(path, data[, options], callback)   fs.appendFileSync(path, data[, options])  
写入文件   fs.writeFile(file, data[, options], callback)   fs.writeFileSync(file, data[, options])  
读取文件   fs.read()    
读取文件   fs.readFile(path[, options], callback)   fs.readFileSync(path[, options])  
重命名文件   fs.rename(oldPath, newPath, callback)   fs.renameSync(oldPath, newPath)  
关闭文件   fs.close(fd, callback)   fs.closeSync(fd)  
截取文件   fs.ftruncate(fd[, len], callback)   fs.ftruncateSync(fd[, len])  
删除文件   fs.unlink(path, callback)   fs.unlinkSync(path)  
文件存在   fs.stat() / fs.access()   fs.existsSync(path)  
监听文件   fs.watchFile(filename[, options], listener)    
停止监听   fs.unwatchFile(filename[, listener])    
打开大文件   fs.createReadStream(path[, options])    
写入大文件   fs.createWriteStream(path[, options])    
创建目录   fs.mkdir(path[, options], callback)   fs.mkdirSync(path[, options])  
读取目录   fs.readdir(path[, options], callback)   fs.readdirSync(path[, options])  
删除目录   fs.rmdir(path, callback)   fs.rmdirSync(path)  
form 信息创建文件

form 表单进行一个 post 提交,在浏览器打开 127.0.0.1:9527,此时输入表单信息,填写用户名/密码/备注等信息.点击提交之后会直接在当前目录下创建一个 user.txt 的文件,使用 writeFileSync()同步方法进行创建

writeFileSync()方法

function router(p) { ...... "http://www.likecs.com/": (request, response) => { response.writeHead(200, { "Content-type": "text/html;charset=utf-8" }); createForm(response); response.end(); }, "/login": (request, response) => { let totalData = ""; request.on("data", data => { totalData += data; }); request.on("end", () => { response.writeHead(200, { "Content-type": "text/html;charset=utf-8" }); //username=liudehua&password=123456&remark=%E6%88%91%E6%98%AF%E5%88%98%E5%BE%B7%E5%8D%8E%2C%E6%88%91%E6%98%AF%E4%B8%80%E5%90%8D%E6%AD%8C%E6%89%8B //username=liudehua&password=123456&remark=我是刘德华,我是一名歌手 let decodeData = decodeURIComponent(totalData); //解决中文乱码 fs.writeFileSync(path.join(__dirname, "/user.txt"), decodeData); response.end(); }); }, ...... } function createForm(response) { response.write("<form method='post' action='login'>"); response.write("<div>用户名:</div><input type='text'>"); response.write("</br>"); response.write("<div>密码:</div><input type='text'>"); response.write("</br>"); response.write( "<div>备注:</div><textarea rows='10' cols='30'></textarea>" ); response.write("</br>"); response.write("<input type='submit' value='提交' />"); response.write("</br>"); }

但是在 node 开发中,同步编程在使用上并没有什么优势,尤其文件读写操作使用异步更好一些

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggwjs.html