提问者:小点点

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);

文件内容示例:Theexamplefile


共1个答案

匿名用户

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

2.)ReadFileSync块,则应考虑使用非阻塞读取操作,例如fs.Promises.ReadFile()

相关问题