Node.js-选择随机文件并读取其内容,然后将其拆分

问题描述

因此,我想选择随机文件,读取其内容,将其拆分并进行字符串化。
但是问题是文件总是一样的。 (我刷新了页面大约10次)
代码:

//require
var fs = require('fs');
var http = require('http')
//require
var files = fs.readdirSync('./pathtofiles');

function randomfile(list){
    return list[Math.floor(Math.random() * files.length)];
}

var location = './zdj' + '/' + (randomfile(files))

var data = fs.readFileSync(location,"utf8");
var splittext = data.split("||")

var app = http.createServer(function(req,res){
    res.setHeader('Content-Type','application/json');
    res.end(JSON.stringify({"test1": splittext[0],"test2": splittext[1],"test3": splittext[2]}));
});
app.listen(3000);

文件内容示例:||示例||文件

解决方法

在启动服务器之前确定“随机”文件。为了对每个请求执行此操作,您需要在请求回调中调用randomfile(...)

const app = http.createServer( (req,res) => {
    const location = './zdj' + '/' + (randomfile(files))
    const data = fs.readFileSync(location,"utf8");
    const splittext = data.split("||")
    res.setHeader('Content-Type','application/json');
    res.end(JSON.stringify({"test1": splittext[0],"test2": splittext[1],"test3": splittext[2]}));
});

注意:

1。)您现在应该使用let/const而不是var(有关更多信息,请参见this

2。)readFileSync块,您应该考虑使用非阻塞读取操作,例如fs.promises.readFile()

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...