当采用Node.js搭建服务器需要响应浏览器发送的资源请求,服务端应该如何进行磁盘管理操作
由于文件我们预先是不是知道的
var http=require('http')
http.createServer(function(req,res){
res.end()})
请求资源一般是要在req.url进行解析获取到资源的路径,这里我假设已近得到了路径path
读取文件方式
文件模块对文件的读取常规方法fs.readFile()
,fs.readFileSync()
首先采用同步方法,这种方法会堵塞执行,不可取
第二种是异步方法,只要在读取完成之后在回调函数中获取,这也是要等待许久(如果文件过大的话)也不可取
还有一个种方式以文件流的形式传输,fs.createReadStream(path)
通过事件监听
var stream=fs.createReadStream(path)
stream.on('data',function(chunk){
res.write(chunk)})
stream.on('end',function(){
res.end()})
这样书写形式不是最简单
fs.createReadStream(path).pipe(res)
不在采用事件监听的形式,从数据起始到传递由管道自动去执行