我的javascript技巧非常少,我想将文件的行作为String参数传递给预先编写的函数。基本上我想要做的是读取这种格式的文件,每个网址都在自己的行上:
www.url1.com
www.url2.com
......等等
如何读取本地文件并将每一行保存到String数组?
非常感谢,如果有任何不清楚的地方,请告诉我
答案 0 :(得分:0)
查看HTML5文件API。
有关示例,请参阅此博文:http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api
虽然有限制,但必须通过
使用<input type="file">
因此,在用户不知情的情况下,您不能只读取任意文件。
答案 1 :(得分:0)
您可以通过查看FileList
,File
和FileReader
网址API来执行此操作。请注意,您的浏览器可能不支持这些API,但大多数现代浏览器应该。您可以通过在window
对象中查找其属性来检查它们的存在。
我在下面添加了带有注释的示例代码。
HTML:
<input id="f" type="file">
JavaScript的:
// This event listener is triggered when you open a file with the input button.
document.getElementById('f').addEventListener('change', function(event) {
// Get File from FileList.
// Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileList
var f = this.files[0]; // event.target.files[0] works too
// Need an instance of this API for asynchronous file I/O.
var fr = new FileReader();
// First create a function to handle the "onload" event.
fr.onload = function(event) {
// FileReader.result holds file contents
// Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result
var textInFile = this.result; // event.target.result works too
// String.prototype.split with newline character argument
var urls = textInFile.split('\n');
console.log(urls);
}
// This performs asynchronous I/O and eventually triggers the "onload" event.
// Default encoding is UTF-8.
// Documentation: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText
fr.readAsText(f);
});