最基础的前端就是HTML+CSS+Javascript。掌握这三项技术算是入门,但也只是入门而已。现在前端开发的定义远不止于此。前端小课堂(HTML/CSS/JS),本着提高技术水平,夯实基础知识的中心思想,开课(每周四)。使用Node.js的很大一部分使用场景是编写一个小脚本来批处理重复枯燥的任务。比如:获取所有的json内容,然后过滤出想要的数据。将所有图片压缩后放入压缩包中。提取并压缩字体文件。重命名所有文件。在这些任务中,我们都需要访问文件系统。在浏览器环境中,以前没有文件系统的概念。今天就来学习一下吧。Node.js文件模块我们可以使用fs来操作文件系统。constfs=require('fs');callbackmethod所有的文件系统操作都是同步的(10.x有,history也有),callback(10.x有,history也有),promise-based(12.x开始有,history没有)。同步形式的同步会阻止Node.js事件循环和进一步的JavaScript执行,直到操作完成。异常会立即抛出,可以用try...catch或冒泡处理。constfs=require('fs');尝试{fs.unlinkSync('file');console.log('文件已成功删除');}catch(err){//处理错误}asynchronous异步形式total是将完成回调作为最后一个参数。传递给完成回调的参数取决于具体的方法,但第一个参数总是为异常保留的。如果操作成功完成,第一个参数将为null或未定义。constfs=require('fs');fs.unlink('file',(err)=>{if(err)throwerr;console.log('文件删除成功');});promise基于Promise操作返回一个Promise(在异步操作完成时被解析)。constfs=require('fs/promises');(asyncfunction(path){try{awaitfs.unlink(path);console.log(`成功删除文件${path}`);}catch(错误){console.error('error:',error.message);}})('文件');文件路径支持string(使用Path库即可),Buffer(为了兼容),URL(需要newURL('file:///C:/')作为入参。可以使用相对路径(process.cwd()可以查看当前路径),绝对路径.字符串形式在Windows上,Node.js遵循独立驱动器工作目录的概念。当使用不带反斜杠的驱动器路径时可以观察到这种行为。例如,fs.readdirSync('C:\\')可能返回的结果与fs.readdirSync('C:')不同,详见thisMSDNpage一般我们使用Path库:直接看最终地址即可使用当前系统的路径分隔符正确。Unix系统是“/”,Windows系统是“”。URL形式//在Windows上://-带有主机名的WHATWG文件的URL被转换为UNC路径。//file://hostname/file=>hostnamefilefs.readFileSync(newURL('file://hostname/file'));//-带有驱动器号的WHATWG文件的URL被转换为绝对路径。//file:///C:/file=>C:filefs.readFileSync(newURL('file:///C:/file'));APIdirectorydirClassfs.readdirSync()同步获取目录fs.readdir()异步获取目录当调用fs.readdir()或fs.readdirSync()时(withFileTypes选项设置为true),则结果数组填充fs.Dirent对象(而不是字符串或缓冲区)。fs.mkdir(path[,options],callback)异步创建一个目录。回调传递一个可能的异常,以及创建的第一个目录的路径(如果递归为真),(错误,[路径])。可选的选项参数可以是一个整数(指定模式(权限和粘性位)),或者一个对象(具有模式属性和递归属性(指示是否创建父目录))。当path是现有目录时,调用fs.mkdir()只会在recursive为false时导致错误。fs.mkdirSync(path[,options])同步创建目录。返回未定义的,或者如果recursive为真则返回创建的第一个目录的路径。这是fs.mkdir()的同步版本。watchfs.FSWatcher类fs.watch()每当修改指定的监视文件时,都会触发'change'事件。//使用fs.watch()侦听器的示例。fs.watch('./tmp',{encoding:'buffer'},(eventType,filename)=>{if(filename){console.log(filename);}});使用fs.ReadStream类读取流由fs.createReadStream()函数创建并返回的fs.ReadStream实例。fs.createReadStream(path[,options])path<字符串>|<缓冲区>|选项<字符串>|