你能在javascript中逐行阅读吗?

时间:2012-04-02 03:25:26

标签: javascript filereader file-read

有没有办法在javascript中逐行读取文件,特别是这个file字典。我试图建立几个月前制作的java anagram求解器的复制品,但遇到了无法逐行读取文件的问题。我可以下载该文件并将其存储在本地,如果这对于阅读它会有任何不同。

3 个答案:

答案 0 :(得分:3)

使用YQL:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fdocs.oracle.com%2Fjavase%2Ftutorial%2Fcollections%2Finterfaces%2Fexamples%2Fdictionary.txt%22&format=json&diagnostics=true&callback=cbfunc

Here's what the fiddle looks like:

window.callback = function(a) { window.file = a.query.results.body.p; go(); };

$.getScript('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fdocs.oracle.com%2Fjavase%2Ftutorial%2Fcollections%2Finterfaces%2Fexamples%2Fdictionary.txt%22&format=json&diagnostics=true&callback=callback');

window.go = function() {
    var terms = file.split(' ');

    for (var i = 0; i < 100; i++)
        console.log(terms[i])
};

小提琴只有前100个,但你明白了(我希望)。

答案 1 :(得分:1)

在大多数情况下,您只需将文件读入内存,然后将其解析为行。如果您通过ajax调用将整个内容读入内存,则可以使用data.split("\n")将其转换为行数组。

答案 2 :(得分:0)

您应该为此类操作启动Ajax请求。虽然不建议通过Ajax逐行读取文件,因为最终会在此过程中创建大量服务器请求;因为JavaScript完全是关于客户端和有限访问。对服务器的Ajax请求是最近几年的附加组件。

您肯定使用某些关键字搜索某些信息;因此,如果在服务器功能上添加搜索逻辑,那将是明智之举;通过Ajax调用特定函数并将结果集返回给浏览器。该函数可以是生成结果的文件,也可以是Web服务。你选择你的味道。

备用选项是在开始时将文件信息重新编码为JSON(about JSON)并让它滚动到客户端js脚本。我不建议使用XML,因为它会在处理术语中占用大量的浏览器内存。到过那里! :(。由于JavaScript本身支持JSON,因此它会顺利进行。警告这会将数据暴露给本地。