服务端对文件进行读、写是很常用的功能,那么怎么实现读、写?
使用fs模块,fs模块又两个方法readFile()和writeFile(),两个方法就是对文件进行读、写的
1、读取文件使用readFile(fileName,callback)方法,该方法接受两个参数,fileName:需要读取的文件名;callback:读取的回调函数,回调函数有两个参数 分别为err读取错误,和data读取到的内容
在项目根目录新建一个index.txt,并写入一些内容
const http = require("http")
const fs = require("fs")
var server = http.createServer(function (req,res) {
res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
// 异步读取
fs.readFile('./index.txt',function (err,data) {
if(err){
res.write("文件不存在")
}else {
res.write(data)
}
res.end()
})
// 同步读取
var data = fs.readFileSync('index.txt');
console.log("同步读取: " + data.toString());
})
server.listen(8080)
启动服务器,浏览器访问,可以看到浏览器输入了文件的内容
如果使用console在命令工具中打印输出的是buffer,这是原始的二进制数据,服务器除了要出来文本,还要处理图片等二进制文件
如果想要看到文字就要使用data.toString()
2、对文件写入内容使用writeFile(fileName,data[,option],callback)方法
fileName:为需要写入的文件;
data:为写入的内容;
callback:写入的回调函数;
如果options是一个字符串,则他指定字符编码
const http = require("http")
const fs = require("fs")
var server = http.createServer(function (req,res) {
res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
fs.writeFile('./index.txt','我是通过node.js的文件系统fs.writeFile写入文件的内容','utf8',function (err) {
// 异步读取
fs.readFile('./ceshi.txt',function (err,data) {
if(err){
res.write("文件不存在")
}else {
res.write(data)
}
res.end()
})
})
})
server.listen(8080)
打开index.txt文件可以看到内容已经写入了,但是如果index.txt原本就有内容,再写入,那么原来的内容将被新写入的内容替代
更多文件操作可以去官网查看
在项目根目录新建一个www文件夹,在文件新建a.html、b.html
a.html
Title
a.html
b.html
Title
这是b.html页面
server.js
const http = require("http")
const fs = require("fs")
var server = http.createServer(function (req, res) {
var fileName = './www' + req.url
fs.readFile(fileName, function (err, data) {
console.log("bbbbbbb")
if (err) {
res.write("404")
} else {
res.write(data)
}
res.end()
})
console.log("aaaaaa")
})
server.listen(8080)
启动服务,浏览器访问localhost:8080/a.html 和 localhost:8080/b.html 可以看到确实按照html的样式显示了
注意打印的内容顺序,res.end()的位置