我正在为iPad编写一个Web应用程序,它将从文本文件中加载数据。 (样本数据集约为400 kb)。除了文件读取,我已经设置了所有内容。我设置代码的方式是,你传递一个逐行读取文件的对象。
如何逐行读取文件?
如果没有直接的方法逐行读取文件,有人可以告诉我一个如何将文件读入字符串对象的示例吗? (这样我就可以使用拆分方法:P)
答案 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命中某些服务器端代码之后才有可能。