本文共 5054 字,大约阅读时间需要 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/