03. 读写文件

2022-10-31 11:27:32发布
64

读取文件

读取文件使用readFile或者readFileSync,前者是异步,后者是同步。这里以异步举个例子。

const fs = require('fs');

fs.readFile('./a.txt', (err, data)=>{
    if (err) {
        console.log(err);
        return;
    }
    console.log(data.toString());
});

功能:读取当前目录的a.txt的内容

分析

1. 读取文件操作需要引入fs模块

2. 调用fs模块的readFile方法,方法中有2个参数,一个是读取的文件路径,另外一个是回调函数。回调函数中有2个参数,一个是错误信息、一个是读取到的数据。如果读取不到,则err返回错误码。否则返回null

3. 返回的data,如果直接打印,则是二进制数据。需要使用toString转换一下


写入文件

写入文件使用writeFile或者writeFileSync,前者是异步,后者是同步。这里以异步举个例子。

const fs = require('fs');

fs.writeFile('./b.txt', "我爱吃三文鱼", (err)=>{
    if (err) {
        console.log(err);
        return;
    }
    console.log("写入文件成功");
});

功能:在当前目录下,创建一个b.txt,写入 “我爱吃三文鱼”

分析

1. 写入文件操作需要引入fs模块

2. 调用fs模块的writeFile方法,方法中有3个参数,一个是写入的文件路径,一个是写入的内容,另外一个是回调函数。回调函数中有1个参数,即错误信息。如果写入失败,则err返回错误码。否则返回null


访问www文件夹下的文件

const http = require('http');
const fs = require('fs');

const server = http.createServer((req,res)=>{
    fs.readFile('./www' + req.url, (err, data)=>{
        if (err) {
            res.write('404');
        } else {
            res.write(data.toString());
        }
        res.end();
    });
});

server.listen(8080);
console.log('server is runing ...');

注意点:res.end()必须放在readFile里面。因为读取文件时异步的,如果放在外面,会先执行res.end(),然后等读取完毕后执行readFile的回调函数,在执行write,则会报 write after end 这个错误