1、同步读取
var res = fs.readFileSync("./a.json")console.log(res.toString());
- 手动操作的步骤 * 1、打开文件 * fs.openSync(path[, flags[, mode]]) * - path 要打开文件的路径 * - flags 打开文件要做的操作的类型 * r 只读的 * w 可写的 * - mode 设置文件的操作权限,一般不传 * 返回值: * - 该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作 * * 2、向文件中写入内容 * fs.writeSync(fd, string[, position[, encoding]]) * - fd 文件的描述符,需要传递要写入的文件的描述符 * - string 要写入的内容 * - position 写入的起始位置 * - encoding 写入的编码,默认是utf-8 * * 3、保存并关闭文件 * fs.closeSync(fd) * - fd 要关闭的文件的描述符var fs = require("fs")// console.log(fs);//打开文件var fd = fs.openSync("hello.txt","w")//向文件中写入内容fs.writeSync(fd,"今天是个晴天")//关闭文件fs.closeSync(fd)//console.log(fd);console.log("程序向下执行");
2、异步读取
fs.readFile("./a.json",(err,data)=>{ if(err){ throw new Error("读取错误") }else{ console.log(data.toString()); }})
异步文件写入
fs.open(path[, flags[, mode]], callback) * - 用来打开一个文件 * - 异步调用的方法:结果都是通过回调函数的参数返回的 * - 回调函数两个参数 * err 错误对象,如果没有错误则为null * fd 文件的描述符 * fs.write(fd, string[, position[, encoding]], callback) * - 用来异步写入文件 * fs.close(fd[, callback]) * - 用来关闭文件fs.open("hello2.txt","w",function(err , fd){ //console.log(arguments); if(!err){ //console.log(fd); //如果没有出错,则对文件进行写入操作 fs.write(fd,"这是异部写入的内容",function(err){ if(!err){ console.log("写入成功"); } //关闭文件 fs.close(fd,function(err){ if(!err){ console.log("文件已关闭"); } }) }) }else{ console.log(err); }})console.log("程序向下执行");
简单文件写入
fs.writeFile(file, data[, options], callback) * fs.writeFileSync(file, data[, options]) * - file 要操作的文件的路径 * - data 要写入的数据 * - options 选项,可以对写入进行一些设置 * - callback 当写入完成以后执行的函数 * flag: * r 可读 * w 写入 * a 追加 fs.writeFile("C:\\Users\\chengdong\\Desktop\\hello.txt","这是通过writeFile写入的内容",{flag:"w"},function(err){ if(!err){ console.log("写入成功"); }else{ console.log(err); }})
流式文件写入
同步、异步、简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出
fs.createWriteStream(path[, options]) * - 可以用来创建一个可写流 * - path 文件路径 * - options 配置的参数可以通过监听流的open和close事件来监听流的打开和关闭 * on(事件字符串,回调函数) * - 可以为对象绑定一个事件 * once(事件字符串,回调函数) * - 可以为对象绑定一个一次性的事件,该事件将会在触发一次以后自动失效var ws = fs.createWriteStream("hello3.txt")ws.once("open",function(){ console.log("流打开了");})ws.once("close",function(){ console.log("流关闭了");})//通过ws向文件中输出内容ws.write("通过可写流写入的内容,")ws.write("今天天气真不错,")ws.write("锄禾日当午,")ws.write("红掌拨清波,")ws.write("通过可写流写入的内容,")//关闭流//ws.close()ws.end()
流式文件读写
/** * 流式文件读取也适用于一些较大的文件,可以分多次将文件读取到内存中 */var fs = require("fs")//创建一个可读流var ws = fs.createReadStream("hello3.txt")//创建一个可写流var ss = fs.createWriteStream("hello.txt")ws.once("open",function(){ console.log("可读流打开");})ws.once("close",function(){ console.log("关闭成功");})ss.once("open",function(){ console.log("可写流打开");})ss.once("close",function(){ console.log("关闭成功");})//如果要读取一个可读流中的数据,必须要为可读流绑定一个data事件,data事件绑定完毕,它会自动开始读取数据// ws.on("data",function(data){// //console.log(data.toString());// ss.write(data)// })//pipe() 可以将可读流中的数据,直接输出到可写流中ws.pipe(ss)
简单文件读取
fs.readFile(path[, options], callback) * fs.readFileSync(path[, options]) * - path 要读取的路径 * - options 读取的选项 * - callback 通过回调函数将读取的内容返回 * err 错误对象 * data 读取到的数据,会返回一个buffer var fs = require("fs")fs.readFile("hello3.txt",function(err,data){ if(!err){ //console.log(data.toString()); //将data写入到文件中 fs.writeFile("hello.txt",data,function(err){ if(!err){ console.log("文件写入成功"); } }) }else{ console.log(err); }})