本文共 5067 字,大约阅读时间需要 16 分钟。
fs
是filesystem
的缩写,此模块提供本地文件的读写能力,几乎对所有模块都提供异步和同步两种操作方式,异步方法的最后一个参数都是一个回调函数,传递给回调函数的参数取决于具体方法,但回调函数的第一个参数都会保留给异常;当使用同步方法时,任何异常都会被立即抛出
参考
旧版使用
exists()
判断给定路径是否存在 最新版已废弃,一共三个参数:
不建议在调用 fs.open() 、 fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查一个文件的可访问性。 如此处理会造成紊乱情况,因为其他进程可能在两个调用之间改变该文件的状态。 作为替代,用户代码应该直接打开/读取/写入文件,当文件无法访问时再处理错误。
const fs = require('fs'); fs.access('./test.js', function (err) { console.log(err ? '不可访问' : '可访问'); }) fs.accessSync('./text.js'); // 直接报错
参数:
const fs = require('fs'); fs.open('./router.js', 'a+', function (err, fd) { if (!err) { console.log(fd); } else { console.log(err); } }) fs.openSync('./router.js', 'a+');
三个参数,
fs.readFile('./output.txt', 'utf-8', function (err, data) { console.log('err', err); console.log('data', data); }) const fileData = fs.readFileSync('./output.txt', 'utf-8');
写入数据到文件,如果文件已经存在则替代文件,可以有四个参数:
const fs = require('fs'); fs.writeFile('./op.js', 'const a = "a";', 'utf-8', function (err) { console.log(err); // null }) fs.writeFileSync('./op.js', 'const b = "a";', 'utf-8');
追加数据到文件,如果文件不存在则创建文件
const fs = require('fs'); fs.appendFile('./test.txt', 'this is append', function (err) { console.log(err ? '失败' : '成功'); }) fs.appendFileSync('./test.txt', 'this is appendSync');
const fs = require('fs'); fs.unlink('./output/output.txt', function (err) { console.log(err); }) fs.unlinkSync('./output/output.txt');
三个参数
const fs = require('fs'); fs.mkdir('./output', function (err) { console.log(err); }) fs.mkdirSync('./output'); // 直接报错,重复创建相同目录
三个参数
const fs = require('fs'); fs.readdir('./', function (err, files) { console.log(err || files); }) console.log(fs.readdirSync('./'));
stat方法的参数是一个文件或目录,它产生一个对象,该对象包含了该文件或目录的具体信息。我们往往通过该方法,判断正在处理的到底是一个文件,还是一个目录。
stats 对象的属性
stats.isFile()
是否是文件stats.isDirectory()
是否是目录atime、atimeMs
访问时间mtime、mtimeMs
修改时间ctime、ctimeMs
变化时间birthtime、birthtimeMs
创建时间fs.readdir('./', function (err, files) { if (!err) { files.forEach((file) => { fs.stat('./' + file, function (error, stats) { if (!error) { console.log(file, 'is FILE', stats.isFile()); console.log(file, 'is DIR', stats.isDirectory()); } }) }) } }) const stats = fs.statSync('./');
const fs = require('fs'); fs.rmdir('./output', function (err) { console.log(err || '成功'); }) fs.rmdirSync('./output');
watchFile
监听一个文件,如果该文件发生变化,就会自动触发回调函数;unwatchfile
停止监视文件变化
watchFile()
unwatchfile()
watch()
比watchFile
、unwatchfile
更高效的监听方法
rename
或者 change
; filename: 触发事件的文件名fs.watch API 不是 100% 跨平台一致的,且在某些情况下不可用。递归选项只支持 macOS 和 Windows。
const fs = require('fs'); fs.watchFile('./test.txt', function (curr, prev) { console.log(curr); console.log('+++++++++ ========= ==+++++++++++'); console.log(prev); fs.unwatchFile('./test.txt'); // 一次修改就停止监听 }) // ================================================ // const fs = require('fs'); const a = fs.watch('./test.txt', function (eventType, fileName) { console.log(eventType); console.log('====== =++++++++ == ========'); console.log(fileName); this.close(); // close 方法停止监视 })
createReadStream
用于返回一个新建的ReadStream
对象,参数如下:
createWriteStream
用于返回一个新建的WriteStream
对象,参数如下:
fs.createReadStream('text.txt'); fs.createWriteStream('text.txt');
转载地址:http://ybvoz.baihongyu.com/