Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中逐行读取文件?_Javascript_Ipad_File Io - Fatal编程技术网

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

如何在JavaScript中逐行读取文件?,javascript,ipad,file-io,Javascript,Ipad,File Io,我正在为iPad编写一个web应用程序,它将从文本文件加载数据。(样本数据集约为400 kb)。除了文件读取之外,我已经把一切都准备好了。按照我设置代码的方式,传递一个对象,该对象逐行读取文件 如何逐行读取文件 如果没有直接的方法逐行读取文件,有人能给我举一个如何将文件读入字符串对象的例子吗?(这样我就可以使用split方法:P)我认为这是不可能的,除非你使用ajax来处理服务器端的代码。如果我理解你想做什么,这是可行的: var txtFile = new XMLHttpRequest();

我正在为iPad编写一个web应用程序,它将从文本文件加载数据。(样本数据集约为400 kb)。除了文件读取之外,我已经把一切都准备好了。按照我设置代码的方式,传递一个对象,该对象逐行读取文件

如何逐行读取文件


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

我认为这是不可能的,除非你使用ajax来处理服务器端的代码。

如果我理解你想做什么,这是可行的:

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);

MobileSafari没有这个功能,所以我想你说的是从网络资源中阅读。你不能那样做。当您通过ajax读取资源时,浏览器将首先将其完全读取到内存中,然后将整个字符串作为字符串传递给ajax回调

在回调中,您可以将字符串分成几行,并将其包装到一个对象中,该对象具有代码所需的API,但您仍然可以一次将字符串全部存储在内存中。

使用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');

什么样的文件?从一个URL?从设备?一个纯文本文件。从URL开始就可以了。我发现了一个FileReader对象:。不幸的是,它读取整个文件,我不知道如何使用它。我认为这是可能的,如果这样一个对象存在并且做了我认为它做的事情(读取一个文件)。@Ryan:看到我的答案了吗
FileReader
是文件API的一部分,Mobile Safari不支持。400 kb的文件对于iPad内存来说合理吗?@Ryan:第一代iPad有256M=262656K的RAM。40万英镑不到这个数字的十分之二(~0.15%)。不过,我不知道移动Safari允许使用多少。你得试试看。当然,在阅读完字符串后,要小心不要复制太多…这更多的是分配给Mobile Safari的内存。许多应用程序极大地限制了分配给JS的内存。@Ryan:因此“我不知道Mobile Safari允许使用多少内存。”;-)它发送请求,而不是文件。目前尚未收到该文件。
null
参数(在本例中可以省略)表示您不向服务器上载任何文件。@谢谢!它起作用了!我不得不重新整理我的程序,但我让文件读取开始工作。如何通过循环中的EOF一次读取一行?在我的代码中,该注释位于一个名为“myfunction()”的函数中,但当我运行它时,它会说“myfunction未定义?”这会起作用。但它确实需要JQuery,这是比较常见的,但它仍然是一个值得考虑的警告。我没有在那个项目中使用JQuery。