如何在JavaScript中逐行读取文件?

时间:2011-07-28 15:02:52

标签: javascript ipad file-io

我正在为iPad编写一个Web应用程序,它将从文本文件中加载数据。 (样本数据集约为400 kb)。除了文件读取,我已经设置了所有内容。我设置代码的方式是,你传递一个逐行读取文件的对象。

如何逐行读取文件?

如果没有直接的方法逐行读取文件,有人可以告诉我一个如何将文件读入字符串对象的示例吗? (这样我就可以使用拆分方法:P)

4 个答案:

答案 0 :(得分:13)

如果我明白你想做什么,这可能有用:

var txtFile = new XMLHttpRequest();
txtFile.open("GET", "http://website.com/file.txt", true);
txtFile.onreadystatechange = function()
{
  if (txtFile.readyState === 4) {  // document is ready to parse.
    if (txtFile.status === 200) {  // file is found
      allText = txtFile.responseText; 
      lines = txtFile.responseText.split("\n");
    }
  }
}
txtFile.send(null);

答案 1 :(得分:2)

Mobile Safari没有File API,因此我假设您正在谈论从网络资源中阅读。你不能这样做。当您通过ajax读取资源时,浏览器将首先将其完全读入内存,然后将整个字符串作为字符串传递给您的ajax回调。

在你的回调中,你可以获取字符串并将其分解为行,并将其包装在具有代码所需API的对象中,但是你仍然会在内存中同时拥有字符串。

答案 2 :(得分:2)

使用jQuery:

myObject = {}; //myObject[numberline] = "textEachLine";
$.get('path/myFile.txt', function(myContentFile) {
   var lines = myContentFile.split("\r\n");

   for(var i  in lines){
      //here your code
      //each line is "lines[i]"

      //save in object "myObject": 
      myObject[i] = lines[i]

      //print in console
      console.log("line " + i + " :" + lines[i]);
   }
}, 'text');

答案 3 :(得分:0)

我认为只有在使用ajax命中某些服务器端代码之后才有可能。