2

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

4

3 回答 3

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

这是小提琴的样子:

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 个,但你明白了(我希望)。

于 2012-04-02T04:02:16.607 回答
1

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

于 2012-04-02T03:54:40.717 回答
0

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

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

另一种选择是在开始时将文件信息重新编码为 JSON(关于 JSON),并让它滚动到客户端 js 脚本。我不会为此推荐 XML,因为它会在处理方面消耗大量的浏览器内存。到过那里!:(。由于 JavaScript 对 JSON 有原生支持,它会顺利进行。警告这会将数据暴露给本地。

于 2012-04-02T04:10:49.337 回答