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

时间:2020-08-24 15:05:54

标签: node.js http split fs stringify

因此,我想选择随机文件,读取其内容,将其拆分并进行字符串化。
但是问题是文件总是一样的。 (我刷新了页面大约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);

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

1 个答案:

答案 0 :(得分:0)

在启动服务器之前确定“随机”文件。为了对每个请求执行此操作,您需要在请求回调中调用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()