Node.js fs模块:异步与同步文件操作

0 下载量 80 浏览量 更新于2024-08-29 收藏 97KB PDF 举报
"Node核心模块之fs模块01" 在Node.js中,`fs`模块是核心模块之一,它提供了丰富的文件系统操作接口,允许开发者进行读取、写入、创建、删除、移动文件以及管理目录等操作。这个模块的设计灵感来源于UNIX(POSIX)标准,因此,对于熟悉这类系统的开发者来说,上手会更加容易。 fs模块中的方法分为同步(synchronous)和异步(asynchronous)两种。同步方法会在调用后立即阻塞代码执行,直到该方法完成其操作;而异步方法则不会阻塞,它们会立即返回,并在操作完成后通过回调函数通知结果。异步方法通常推荐用于性能敏感的应用,因为它们不会阻止其他任务的执行,这对于高流量的服务器尤其重要,可以避免因长时间读写操作导致的程序卡顿。 **异步读取文件:** fs.readFile() 是异步读取文件内容的函数。它的第一个参数是文件路径,第二个参数是回调函数,回调函数有两个参数,第一个参数 `err` 用于接收可能出现的错误,第二个参数 `data` 是包含文件内容的Buffer对象。例如: ```javascript const fs = require('fs'); fs.readFile('./file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); ``` **同步读取文件:** fs.readFileSync() 是同步版本的读取文件方法,它会阻塞代码执行直到读取完成。此方法直接返回一个Buffer对象,如果发生错误,将抛出异常。例如: ```javascript const fs = require('fs'); try { const data = fs.readFileSync('./file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } ``` **写入文件:** fs.writeFile() 和 fs.writeFileSync() 分别是异步和同步的写入文件方法。它们接受文件名、数据和可选的编码作为参数,然后将数据写入指定文件。写入完成后,异步方法不会返回任何值,而同步方法会抛出错误或直接返回。 **追加文件内容:** fs.appendFile() 和 fs.appendFileSync() 可以在现有文件的末尾添加新的内容,而不是覆盖原有的文件内容。 **创建和删除文件:** fs.writeFile() 实际上也可以用于创建新文件,如果文件已存在,内容会被替换。另外,fs.unlink() 和 fs.unlinkSync() 用于删除文件,而 fs.mkdir() 和 fs.mkdirSync() 用于创建目录。 **重命名和移动文件:** fs.rename() 和 fs.renameSync() 用于重命名或移动文件,而 fs.rmdir() 和 fs.rmdirSync() 用于删除空目录,fs.rm() 和 fs.rmSync() 在Node.js 14及以上版本引入,可以删除文件或目录(包括非空目录)。 **文件系统监控:** fs.watch() 方法可以监听文件或目录的变化,当文件或目录发生改变时,会触发回调函数。 以上只是`fs`模块中部分常用方法的简介,实际上,`fs`模块还提供了许多其他功能,如读写流、文件权限管理等。在实际开发中,根据具体需求选择合适的方法,合理利用同步和异步操作,可以高效地处理文件系统任务。