nodeJS根据文件后缀名读取文件并返回符合文件总数

第一步安装express启动服务

const express = require('express')

const app = new express()

app.listen(5000, () => {
     
	console.log(running...)
})

第二步配置路由

appJS文件中内容

const express = require('express')
const router = require('./router/index') // 路由模块

const app = new express()
app.use(router)
app.listen(5000, () => {
     
	console.log(running...)
})

router路由模块内容

const express = require('express')
const fs = require('fs') // 文件处理模块
const path = require('path') // 路径处理模块

const router = new express.Router()

// 根据文件名返回文件内容
router.get('/', (req, res) => {
     
	
})
// 返回所有.txt文件数目和名称
router.get('/filse', (req, res) => {
     

})

实现路由功能

第一步实现根据文件名称返回文件内容

router.get('/', (req, res) => {
     
  let fileName = req.query.name
  fileName = fileName || 'demo.txt'

  // 获取要读取文件的路径
  let filePath = path.resolve(__dirname,  `../data/${
       fileName}`)

  // 开始读取文件
  fs.readFile(filePath, function (err, data) {
     
    if(err) return console.log(err)
    res.send(JSON.stringify(data.toString()))
  })
})

第二步返回所有.txt文件数目和名称
在util文件夹创建工具类,实现根据文件后缀名过滤文件方法

const fs = require('fs')
const path = require('path')
/**
 * 
 * @param {要读取的目录路径} dir 
 */
module.exports = function(dir) {
     
  let files = []
  var list = fs.readdirSync(dir)
  list.forEach(function(file) {
     
    if(path.extname(file) === '.txt') {
     
      files.push(file)
    }
  })
  let obj = {
     
    num: files.length,
    filesName: files
  }
  return obj
}

第二步实现路由功能

const readDir= require('../utils/utils') // 导入读取文件目录的方法

router.get('/files', (req, res) => {
     
  let filePath = path.resolve(__dirname,  '../data')
  res.send(readDir(filePath))
})

路由全部代码

const express = require('express')
const fs = require('fs')
const path = require('path')
const router = express.Router()
const readDir = require('../utils/utils')

// 文件读取路由
router.get('/', (req, res) => {
     
  let fileName = req.query.name
  fileName = fileName || 'demo.csv'

  // 获取要读取文件的路径
  let filePath = path.resolve(__dirname,  `../data/${
       fileName}`)

  // 开始读取文件
  fs.readFile(filePath, function (err, data) {
     
    if(err) return console.log(err)
    res.send(JSON.stringify(data.toString()))
  })
})

// 获取文件个数及文件名称路由
router.get('/files', (req, res) => {
     
  let filePath = path.resolve(__dirname,  '../data')
  res.send(readDir(filePath))
})

// 配置404
router.all('*', (req, res) => {
     
  fs.readFile(path.resolve(__dirname, '../public/404.html'), (err, data) => {
     
    if(err) throw err
    res.send(data.toString())
  })
})

module.exports =  router

你可能感兴趣的:(Node,nodejs,中间件)