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.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()))
  })
})

// 获取文件个数及文件名称路由
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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值