node.js学习笔记之读取文件与目录

读取文件返回给客户端

  1. 加载http和fs核心模块。声明要读取的目录。注意斜杠要变一下,不然会报错
var http = require('http')
var fs = require('fs')
var myDir = 'C:/Users/lizzy/Desktop/files'
  1. 创建一个web服务器
var server = http.createServer()
  1. 监听请求,处理请求。如果url为‘/’,默认打开index.html,如果是其他就默认打开对应的文件。**注意,这里读取到的数据在后台还是二进制数据,但是返回给浏览器后浏览器对html文件进行了解析。实验了多次看到无论是data还是data.toString()返回给浏览器都被解析了。
server.on('request',function(req,res){
	// 这里的url是以'/'开头的,如果不写就默认'/'
	var url = req.url
	if (url === '/'){
	fs.readFile(myDir + '/index.html',function(err,data){
		if (err) {
			return res.end('404 not found')
		} 
	return res.end(data)
	})
	} 
	fs.readFile(myDir + url,function(err,data){
		if (err) {
			return res.end('404 not found')
		} 
	res.end(data)
	})
})

读取到的html数据data的后台显示
在这里插入图片描述
读取到的html数据data.toString()的后台显示
在这里插入图片描述
读取到的html数据data返回给服务器后的显示
在这里插入图片描述

  1. 打开服务器
server.listen(3000,function(){
	console.log('server is running')

读取文件目录

fs.readdir(路径,回调函数),同读取文件一样,只不过返回的是files数组

读取文件目录更改html文件再返回给浏览器(理解不透彻,可能有不对的地方)

这里先得有一个template.html的文件,然后通过服务端读取文件目录来刷新html
前面都是一样的,中间用fs.readFiles得到files数组,然后用forEach循环files目录里的文件得到多个tr,替换template.html里的tbody内容

var http = require('http')
var fs = require('fs')
var myDir = 'C:/Users/lizzy/Desktop/files'
var server = http.createServer()
server.on('request',function(req,res){
	// 这里的url是以'/'开头的,如果不写就默认'/'
	var url = req.url
	fs.readFile(./template.html',function(err,data){
		if (err) {
			return res.end('404 not found')
		} 
	fs.readdir(myDir,function(err,files){
		if (err){
			return res.end('cannot find the directory')
			}
			var content = ''
			files.forEach(function(item){
			content += `
			<tr>
            <td data-value="apple/"><a class="icon dir" href="C:/Users/lizzy/Desktop/files">${item}/</a></td>
            <td class="detailsColumn" data-value="0"></td>
            <td class="detailsColumn" data-value="1509589967">2019/2/22</td>
          </tr>
          `
            data = data.toString()
			data.replace('tbody的内容',content)
			}) 
			res.end(data)
		})
})
server.listen(3000,function(){
	console.log('server is running')

猜你喜欢

转载自blog.csdn.net/lizzyyang55/article/details/87879798