【问题标题】:Node.js - selecting random file and reading its content then spliting itNode.js - 选择随机文件并读取其内容然后拆分它
【发布时间】:2020-12-13 05:58:35
【问题描述】:

所以,我想选择随机文件,读取它的内容,拆分它并对其进行字符串化。
但问题是文件总是相同的。 (我刷新了 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);

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

【问题讨论】:

  • 可能包括一些输出。

标签: node.js http split fs stringify


【解决方案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(有关更多信息,请参阅this

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多