Bry*_*ant 5 javascript file-io filesystemobject
我想用FileSystemObject读取一个文件.我的代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Read json</title>
</head>
<body>
<script type="text/javascript">
function readFile(filename){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var ForReading = 1;
var f1 = fso.OpenTextFile(filename, ForReading);
var text = f1.ReadAll();
f1.close();
return text;
}
myJSONText = "text.txt";
var myObject = readFile(myJSONText);//eval('(' + myJSONText + ')');
document.write(myObject.name);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
首先,让我重复上面的一些评论.我从未见过使用ActiveXObject客户端作为应该完成的事情.
现在,让我说我正在努力学习如何自己做这件事.以下是关于这个问题的一些想法(以及有用的链接,见底部).
根据MSDN 脚本诊所专栏中的 "关于文本文件的大量ADO"的总体布局是:
你是怎么开始的?根据IE开发中心(此处链接),在Javascript中使用ActiveXObject,如下所示:
newObj = new ActiveXObject(servername.typename[, location])
Run Code Online (Sandbox Code Playgroud)
当你fso在代码中声明时,你已经知道了.那个"servername"的东西,不是本地访问的文件吗?而不是你输入的"servername等" Scripting.FileSystemObject.如果主机PC上的HKEY_CLASSES_ROOT注册表项支持它,这实际上很好(参见上面的参考).
一旦ActiveXObject成功声明,并且浏览器允许它(仅限IE),并且最终用户同意弹出任何警告("此页面上的ActiveX控件可能不安全地与页面的其他部分交互. .."等),然后该对象允许您使用与该对象关联的任何方法.这就是Windows Scripting FileSystemObject的强大功能.
现在可以使用任何FileSystemObject(fso)方法,顾名思义,它意味着本地计算机上的文件(和目录)交互.不只是阅读,因为你的问题集中在,但写作和删除也是如此.的方法和属性的完整列表,请访问MSDN 这里.使用后,使用该.close()方法关闭文件.
因此,出于显而易见的原因,这很危险.但起初我不明白的是,这些与文件系统的交互可能会无形地发生.很有可能无论你做什么,从阅读文件到删除目录树,都不会出现任何警告或命令提示,让你知道发生了什么,因为你的代码很少.
让我先评论一下上面的代码.将JSON与从FileSystemObject中提取的数据结合使用,提供了一种允许JavaScript交互的好方法(JSON .parse和.stringify立即浮出水面).有了这个,数据可以存储在本地,也许作为HTML5本地存储的替代品(参考这个SO线程,这个概念更加深入,以及我在这里提出的另一个SO问题).
以下是一些进一步阅读的链接:
IE开发中心,JavaScript对象,ActiveXObject
MSDN JScript Windows脚本(包括FileSystemObject方法等)
MSDN脚本编写诊所(较旧的文章,许多断开的链接,但这些东西很多很好的信息)