我不知道如何做到这一点。我应该从哪里开始?我用谷歌搜索了这个,并没有提出如何从文本文件中提取随机行的结果。
我唯一发现的是https://github.com/chrisinajar/node-rand-line,但它不起作用。如何从文本文件中读取随机行?
答案 0 :(得分:10)
您可能希望查看node.js标准库函数来读取文件fs.readFile,最后得到以下内容:
//note this will be async
function getRandomLine(filename){
fs.readFile(filename, function(err, data){
if(err) throw err;
var lines = data.split('\n');
/*do something with */ lines[Math.floor(Math.random()*lines.length)];
})
}
如果阅读整篇文章并且拆分不是一种选择,那么可以查看this stack overflow的想法。
答案 1 :(得分:3)
我没有Node方便测试代码,所以我不能给你确切的代码,但我会做这样的事情:
请注意,这并非完全随机。较长的行将被加权更多,但它是唯一的方法,不读取整个文件来获得行数。
此方法允许您在不将整个文件保留在内存中的情况下获得“随机”行。
答案 2 :(得分:1)
我同样需要从100 Mo以上的文件中随机选择一行。
所以我想避免将所有文件内容存储在内存中。
最后,我对所有行进行了两次迭代:首先获取行数,然后获取目标行的内容。
代码如下所示:
foo['a']['b']['c'] = self.shortcut
答案 3 :(得分:0)
我可以给你一个建议,因为我没有任何演示代码
buffered reader
int returnRandom(arraySize)
0
到arraySize