官方文档:node.js文件操作

读取文件

fs.readFile(path[, options], callback)
[]表示可选
具体选项可参考文档fs.readFile

const fs = require('fs');
fs.readFile('hello.txt',{
   flag:'r',encoding:'utf-8'},function(err,data) {
   
     if(err) {
   
     	 console.log(err);
     }else {
   
         console.log(data);
     }
})

问题:如果想要读取多个文件,则这样写需要写很多条。
解决:封装成一个Promise对象
hello.txt

hello2

hello2.txt

hello3

hello3.txt

content
function fsRead(path) {
   
    return new Promise(function(resolve,reject) {
   
        fs.readFile(path,{
   flag:'r',encoding:'utf-8'},function(err,data) {
   
            if(err) {
   
                reject(err);
            }else {
   
                resolve(data);
            }
        })
    })
}
const w1 = fsRead('hello.txt');
w1.then(function(res) {
   
    console.log(res);//hello2
})

async function ReadList() {
   
    let file2 = await fsRead('hello.txt');
    let file3 = await fsRead(file2 + '.txt');
    let finall = await fsRead(file3 + '.txt');
    console.log(finall);//content
}
ReadList();

写入文件

写入与读取类似
fs.writeFile(file, data[, options], callback)
具体文档:fs.writeFile
对于flag的取值:
flag:‘w’(打开文件进行写入。 创建(如果它不存在)或截断(如果它存在)该文件。)
flag:‘r’(打开文件进行读取。 如果文件不存在,则会发生异常。)
flag:‘a’(打开文件进行追加。 如果文件不存在,则创建该文件。)
具体事例:

const fs = require('fs');
// fs.writeFile('test.txt','第一次写入\n',{flag:'w',encoding:'utf-8'},function(err) {
   
// if(!err) {
   
// console.log('写入成功');
// }
// })

function fsWrite(path,content) {
   
    return new Promise(function(resolve,reject) {
   
        fs.writeFile(path,content,{
   flag:'a',encoding:'utf-8'},function(err) {
   
            if(!err) {
   
                resolve(err);
            }
        })
    })
}
//这里对同一个文件进行写入flag值为a,如果为w则直接覆盖了而不是追加内容
async function writeList() {
   
    await fsWrite('1.txt','第一行\n');
    await fsWrite('1.txt','第二行\n');
    await fsWrite('1.txt','第三行\n');
    await fsWrite('1.txt','第四行\n');
}
writeList();

附加:
buffer:参考文档

/** * buffer在内存空间开辟出固定大小的内存 */

// let str = 'hello world';
// let buf = Buffer.from(str);
// console.log(buf.toString());

//开辟一个空的buffer
let buf1 = Buffer.alloc(10);
//安全但是相对于下面的方法效率低
buf1[0] = 255;
console.log(buf1);
//<Buffer ff 00 00 00 00 00 00 00 00 00>




let buf2 = Buffer.allocUnsafe(10);
//以这种方式创建的 Buffer 实例的底层内存不会被初始化
//不安全但是效率高
console.log(buf2);
//<Buffer 11 d7 5f c0 01 69 6d 69 11 25>