Node.js - 选择随机文件并读取其内容然后拆分它
Node.js - selecting random file and reading its content then spliting it
所以,我想 select 随机文件,读取它的内容,拆分它并对其进行字符串化。
但问题是文件总是一样的。 (我刷新了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);
文件内容示例:||示例||文件
“随机”文件是在服务器启动前确定的。为了对每个请求执行此操作,您需要在 request-callback:
中调用 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
块,你应该考虑使用 non-blocking read-operation,例如fs.promises.readFile()
所以,我想 select 随机文件,读取它的内容,拆分它并对其进行字符串化。
但问题是文件总是一样的。 (我刷新了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);
文件内容示例:||示例||文件
“随机”文件是在服务器启动前确定的。为了对每个请求执行此操作,您需要在 request-callback:
中调用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
块,你应该考虑使用 non-blocking read-operation,例如fs.promises.readFile()