在Nodejs中可以通过内置的fs模块(功能)来操作系统文件。fs->filesystem
文件系统中有两种编程方式:同步(以Sync结尾)、回调
用到fs模块先引入,const fs = require(‘fs’);(const用来声明一个不能修改的只读常量。和let类似)
一、文件读取:
1.同步:readFileSync(path[,options]); [ ]内的值可以省略
path:文件路径
options:①省略:以流的形式(十六进制)返回读取到的内容。
②不省略:{"encoding":'utf-8'} | 'utf-8' 返回字符串。
(引入fs模块后先在同级目录下创建一个名为:文件读取的.txt文件,文件内输入测试二字)
①省略options:
let res = fs.readFileSync('文件读取.txt');
console.log(res);
(必须在文件自身所在位置的地址栏进行cmd操作)
Buffer->流 (16进制:0-9 a-f)可以用toString()将16进制转为字符串变为了具体的内容。
let res = fs.readFileSync('文件读取.txt');
console.log(res.toString());
② 不省略options:
let res = fs.readFileSync('文件读取.txt', 'utf-8');
console.log(res);
执行js文件:用文件读取(同步)获得‘文件读取.txt’中的内容:测试
2.回调:fs.readFile(pasth[,options],callback);
callback:箭头函数 (err,result)=>{...}
err:保存错误信息,没有返回null。result:保存结果。
let ult = fs.readFile('文件读取.txt', 'utf-8', (err, result) => { console.log(err, result); });
console.log(ult);
执行js文件:用文件读取(回调)获得‘文件读取.txt’中的内容:测试
二、文件写入(只写同步):fs.writeFileSync(path,data[,options]);
path:路径
data:数据(内容)
[,options]:写入模式,不传递参数默认值w(写入,覆盖原来的内容), 传递可以自己定义模式(a-> z追加) {'flag':'w|a|...'}
①不写options,默认传递w,覆盖原来的内容
(先在同级目录下创建一个名为:文件写入的.txt文件,文件内输入测试二字)
fs.writeFileSync('文件写入.txt','文件写入')
执行结果没有任何返回值,但是不报错,就是执行成功了
文件写入.txt文件页面成果:原本的测试两个字被新加入的'文件写入'替换了。
②写options,在原内容的基础上追加内容 (\n是换行)
fs.writeFileSync('文件写入.txt', '\n文件写入', { flag: 'a' })
执行结果: