javascript-买球官网平台

`
lenjey
  • 浏览: 84539 次
  • 性别:
  • 来自: 北京
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 44)
    • ( 0)
    存档分类

    javascript----文件操作

    [color=darkblue]
    一、功能实现核心:filesystemobject 对象
        要在javascript中实现文件操作功能,主要就是依靠filesystemobject对象。
    二、filesystemobject编程
    使用filesystemobject 对象进行编程很简单,一般要经过如下的步骤: 创建filesystemobject对象、应用相关方法、访问对象相关属性 。
    (一)创建filesystemobject对象
    创建filesystemobject对象的代码只要1行:
    var fso = new activexobject("scripting.filesystemobject");
    上述代码执行后,fso就成为一个filesystemobject对象实例。
    (二)应用相关方法
    创建对象实例后,就可以使用对象的相关方法了。比如,使用createtextfile方法创建一个文本文件:
    var fso = new activexobject("scripting.filesystemobject");
    var f1 = fso.createtextfile("c:\\myjstest.txt",true");
    (三)访问对象相关属性
    要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:getdrive负责获取驱动器信息,getfolder负责获取文件夹信息,getfile负责获取文件信息。比如,指向下面的代码后,f1就成为指向文件c:\test.txt的句柄:
    var fso = new activexobject("scripting.filesystemobject");
    var f1 = fso.getfile("c:\\myjstest.txt");
    然后,使用f1访问对象的相关属性。比如:
    var fso = new activexobject("scripting.filesystemobject");
    var f1 = fso.getfile("c:\\myjstest.txt");
    alert("file last modified: " f1.datelastmodified);
    执行上面最后一句后,将显示c:\myjstest.txt的最后修改日期属性值。
    但有一点请注意:对于使用create方法建立的对象,就不必再使用get方法获取对象句柄了,这时直接使用create方法建立的句柄名称就可以:
    var fso = new activexobject("scripting.filesystemobject");
    var f1 = fso.createtextfile("c:\\myjstest.txt",true");
    alert("file last modified: " f1.datelastmodified);
    三、操作驱动器(drives)
    使用filesystemobject对象来编程操作驱动器(drives)和文件夹(folders)很容易,这就象在windows文件浏览器中对文件进行交互操作一样,比如:拷贝、移动文件夹,获取文件夹的属性。
    (一)drives对象属性
    drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性:
    l totalsize:以字节(byte)为单位计算的驱动器大小。
    l availablespace或freespace:以字节(byte)为单位计算的驱动器可用空间。
    l driveletter:驱动器字母。
    l drivetype:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、cd-rom或者ram盘。
    l serialnumber:驱动器的系列码。
    l filesystem:所在驱动器的文件系统类型,取值为fat、fat32和ntfs。
    l isready:驱动器是否可用。
    l sharename:共享名称。
    l volumename:卷标名称。
    l path和rootfolder:驱动器的路径或者根目录名称。
    (二)drive对象操作例程
    下面的例程显示驱动器c的卷标、总容量和可用空间等信息:
    var fso, drv, s ="";
    fso = new activexobject("scripting.filesystemobject");
    drv = fso.getdrive(fso.getdrivename("c:\\"));
    s = "drive c:" " - ";
    s = drv.volumename "\n";
    s = "total space: " drv.totalsize / 1024;
    s = " kb" "\n";
    s = "free space: " drv.freespace / 1024;
    s = " kb" "\n";
    alert(s);
    四、操作文件夹(folders)
    涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。
    folder对象操作例程 :
    下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:
    var fso, fldr, s = "";
    // 创建filesystemobject对象实例
    fso = new activexobject("scripting.filesystemobject");
    // 获取drive 对象
    fldr = fso.getfolder("c:\\");
    // 显示父目录名称
    alert("parent folder name is: " fldr "\n");
    // 显示所在drive名称
    alert("contained on drive " fldr.drive "\n");
    // 判断是否为根目录
    if (fldr.isrootfolder)
    alert("this is the root folder.");
    else
    alert("this folder isn't a root folder.");
    alert("\n\n");
    // 创建新文件夹
    fso.createfolder ("c:\\bogus");
    alert("created folder c:\\bogus" "\n");
    // 显示文件夹基础名称,不包含路径名
    alert("basename = " fso.getbasename("c:\\bogus") "\n");
    // 删除创建的文件夹
    fso.deletefolder ("c:\\bogus");
    alert("deleted folder c:\\bogus" "\n");
    五、操作文件(files)
    对文件进行的操作要比以上介绍的驱动器(drive)和文件夹(folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。下面分别详细介绍。
    (一)创建文件
    一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。
    第一种是使用createtextfile方法。代码如下:
    var fso, f1;
    fso = new activexobject("scripting.filesystemobject");
    f1 = fso.createtextfile("c:\\testfile.txt", true);
    第二种是使用opentextfile方法,并添加上forwriting属性,forwriting的值为2。代码如下:
    var fso, ts;
    var forwriting= 2;
    fso = new activexobject("scripting.filesystemobject");
    ts = fso.opentextfile("c:\\test.txt", forwriting, true);
    第三种是使用openastextstream方法,同样要设置好forwriting属性。代码如下:
    var fso, f1, ts;
    var forwriting = 2;
    fso = new activexobject("scripting.filesystemobject");
    fso.createtextfile ("c:\\test1.txt");
    f1 = fso.getfile("c:\\test1.txt");
    ts = f1.openastextstream(forwriting, true);
    (二)添加数据到文件
    当文件被创建后,一般要按照“打开文件->填写数据->关闭文件”的步骤实现添加数据到文件的目的。
    打开文件可使用filesystemobject对象的opentextfile方法,或者使用file对象的openastextstream方法。
    填写数据要使用到textstream对象的write、writeline或者writeblanklines方法。在同是实现写入数据的功能下,这3者的区别在于:write方法不在写入数据末尾添加新换行符,writeline方法要在最后添加一个新换行符,而writeblanklines则增加一个或者多个空行。
    关闭文件可使用textstream对象的close方法。
    (三)创建文件及添加数据例程
    下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用:
    var fso, tf;
    fso = new activexobject("scripting.filesystemobject");
    // 创建新文件
    tf = fso.createtextfile("c:\\testfile.txt", true);
    // 填写数据,并增加换行符
    tf.writeline("testing 1, 2, 3.") ;
    // 增加3个空行
    tf.writeblanklines(3) ;
    // 填写一行,不带换行符
    tf.write ("this is a test.");
    // 关闭文件
    tf.close();
    (四)读取文件内容
    从文本文件中读取数据要使用textstream对象的read、readline或readall 方法。read方法用于读取文件中指定数量的字符;readline方法读取一整行,但不包括换行符;readall方法则读取文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用read或readline方法读取文件内容时,如果要跳过一些部分,就要用到skip或skipline方法。
    下面的代码演示打开文件、填写数据,然后读取数据:
    var fso, f1, ts, s;
    var forreading = 1;
    fso = new activexobject("scripting.filesystemobject");
    // 创建文件
    f1 = fso.createtextfile("c:\\testfile.txt", true);
    // 填写一行数据
    f1.writeline("hello world");
    f1.writeblanklines(1);
    // 关闭文件
    f1.close();
    // 打开文件
    ts = fso.opentextfile("c:\\testfile.txt", forreading);
    // 读取文件一行内容到字符串
    s = ts.readline();
    // 显示字符串信息
    alert("file contents = '" s "'");
    // 关闭文件
    ts.close();
    (五)移动、拷贝和删除文件
    对于以上三种文件操作,javascript各有两种对应的方法:file.move 或 filesystemobject.movefile用于移动文件;file.copy 或 filesystemobject.copyfile用于拷贝文件;file.delete 或 filesystemobject.deletefile用于删除文件。
    下面的代码演示在驱动器c的根目录下创建一个文本文件,填写一些内容,然后将文件移动到\tmp目录下,再在目录\temp下面建立一个文件拷贝,最后删除这两个目录的文件:
    var fso, f1, f2, s;
    fso = new activexobject("scripting.filesystemobject");
    f1 = fso.createtextfile("c:\\testfile.txt", true);
    // 写一行
    f1.write("this is a test.");
    // 关闭文件
    f1.close();
    // 获取c:\根目录下的文件句柄
    f2 = fso.getfile("c:\\testfile.txt");
    // 移动文件到\tmp目录下
    f2.move ("c:\\tmp\\testfile.txt");
    // 拷贝文件到\temp目录下
    f2.copy ("c:\\temp\\testfile.txt");
    // 获取文件句柄
    f2 = fso.getfile("c:\\tmp\\testfile.txt");
    f3 = fso.getfile("c:\\temp\\testfile.txt");
    // 删除文件
    f2.delete();
    f3.delete();
    六、结 语
    通过以上对filesystemobject的各种对象、属性和方法的介绍和示例,相信你已经对如何使用javascript语言在页面中操作驱动器、文件和文件夹有了清晰的认识。但是上述提及的例程都非常简单,要全面、灵活地掌握javascript文件操作技术,还需要大量的实践练习。而且还有一点提醒大家,由于涉及到在浏览器中进行文件读写这样的高级操作,对于默认的浏览器安全级别而言,在代码运行前都会有一个信息提示,这点请在实际环境中提示访问者注意。
    附:
    判断客户端文件是否存在的javascript脚本:
    function softisexist(filepath){
    	var fso; 
    	fso = new activexobject("scripting.filesystemobject"); 
    	if(null == filepath || "" == filepath){
    		alert("请输入软件名称");
    		return false;
    	}
    	if(fso.fileexists(filepath)){
    		//alert("文件存在");
    		return true;
    	}else{
    		alert("输入的软件不存在,请重新输入");
    		return false;
    	}
    }

    ---------------------------------------------------
    运行程序时可能会遇到 automation服务器不能创建对象的异常
    解决方法如下:
    方法一:
    开始-运行:regsvr32 scrrun.dll


    方法二:
    请将以下语句复制到记事本中,另存为后缀为.cmd的文件,并运行。当然在命令行下一句句运行也没问题。
    echo 正在修复,这个过程可能需要几分钟,请稍候……
    rundll32.exe advpack.dll /delnoderundll32 %systemroot%\system32\dacui.dll
    rundll32.exe advpack.dll /delnoderundll32 %systemroot%\catroot\icatalog.mdb
    regsvr32 /s comcat.dll
    regsvr32 /s asctrls.ocx
    regsvr32 /s oleaut32.dll
    regsvr32 /s shdocvw.dll /i
    regsvr32 /s shdocvw.dll
    regsvr32 /s browseui.dll
    regsvr32 /s browseui.dll /i
    regsvr32 /s msrating.dll
    regsvr32 /s mlang.dll
    regsvr32 /s hlink.dll
    regsvr32 /s mshtml.dll
    regsvr32 /s mshtmled.dll
    regsvr32 /s urlmon.dll
    regsvr32 /s plugin.ocx
    regsvr32 /s sendmail.dll
    regsvr32 /s mshtml.dll /i
    regsvr32 /s scrobj.dll
    regsvr32 /s corpol.dll
    regsvr32 /s jscript.dll
    regsvr32 /s msxml.dll
    regsvr32 /s imgutil.dll
    regsvr32 /s cryptext.dll
    regsvr32 /s inseng.dll
    regsvr32 /s iesetup.dll /i
    regsvr32 /s cryptdlg.dll
    regsvr32 /s actxprxy.dll
    regsvr32 /s dispex.dll
    regsvr32 /s occache.dll
    regsvr32 /s iepeers.dll
    regsvr32 /s urlmon.dll /i
    regsvr32 /s cdfview.dll
    regsvr32 /s webcheck.dll
    regsvr32 /s mobsync.dll
    regsvr32 /s pngfilt.dll
    regsvr32 /s licmgr10.dll
    regsvr32 /s hhctrl.ocx
    regsvr32 /s inetcfg.dll
    regsvr32 /s trialoc.dll
    regsvr32 /s tdc.ocx
    regsvr32 /s msr2c.dll
    regsvr32 /s msident.dll
    regsvr32 /s msieftp.dll
    regsvr32 /s xmsconf.ocx
    regsvr32 /s ils.dll
    regsvr32 /s msoeacct.dll
    regsvr32 /s wab32.dll
    regsvr32 /s wabimp.dll
    regsvr32 /s wabfind.dll
    regsvr32 /s oemiglib.dll
    regsvr32 /s directdb.dll
    regsvr32 /s inetcomm.dll
    regsvr32 /s msoe.dll
    regsvr32 /s oeimport.dll
    regsvr32 /s msdxm.ocx
    regsvr32 /s dxmasf.dll
    regsvr32 /s laprxy.dll
    regsvr32 /s l3codecx.ax
    regsvr32 /s acelpdec.ax
    regsvr32 /s mpg4ds32.ax
    regsvr32 /s danim.dll
    regsvr32 /s daxctle.ocx
    regsvr32 /s lmrt.dll
    regsvr32 /s datime.dll
    regsvr32 /s dxtrans.dll
    regsvr32 /s dxtmsft.dll
    regsvr32 /s wshom.ocx
    regsvr32 /s wshext.dll
    regsvr32 /s vbscript.dll
    regsvr32 /s scrrun.dll mstinit.exe /setup
    regsvr32 /s msnsspc.dll /sspccreatesspireg
    regsvr32 /s msapsspc.dll /sspccreatesspireg
    echo.
    echo.
    echo 修复成功!任意键退出!
    pause>nul

    就是组件的注册问题,我的问题用这种方法解决了。


    方法三:
    一直用得好好的vs.net编辑器,突然有一天在我新建一个工程时,进行到一半时,弹出"automation 服务器不能创建对象",然后就停住了。

    我到csdn上以"automation"关键字查阅了c#版的问题,发现有很多朋友都遇上过,而回答的朋友大部分以为提问者问的是ie解析xml文件时的那个错误 (见 http://www.csdn.net/expert/topic/757/757297.xml )

    看到几个回答此类问题的,都是遇到过这个问题的朋友,他们的答案是:重装vs.net都没有作用,最后重新装操作系统才将这个问题解决。
    要我装操作系统真是要我的命,所以我一直用 copy & paste 工程文件来达到新建工程的目的。

    直到有一天,我无意中点了 vs_setup.msi 来添加 vs.net 的帮助文档(后来才知道应该点setup.exe来添加的)。vs_setup.msi进行到一半,也是出错了,一看调试结果,是filesystemobject创建失败(感谢上帝,这里的错误信息终于是友好些了)。
    vs.net的错误 "automation 服务器不能创建对象" 是不是也是这个导致的呢?

    我突然想起,前几个月在网上听说可以禁止使用filesystemobject对象,我当时都忘了怎么操作的了,反正当时一摆弄,具体怎么操作的我也忘了,从那起我也从来没有在我的程序里用过filesystemobject了。到google上搜索,发现禁止filesystemobject有3种方法(http://www.sometips.com/faqs/315.htm),第一种方法:修改注册表([hkey_local_machine\software\classes\clsid\{0d43fe01-f093-11cf-8940-00a0c9054228}\progid]
    @="scripting.filesystemobject"),将filesystemobject改成一个任意的名字,只有知道该名字的用户才可以创建该对象。我查看注册表,该处的名字还是 scripting.filesystemobject.

    那么我的fso为何不能用呢?我突然想起原来当时我用的是第二种方法,"运行regsvr32 scrrun.dll /u,所有用户无法创建filesystemobject"。 当时真是太狠了些。赶快运行 regsvr32 scrrun.dll。我试着用vs.net 创建一个工程,一阵进度提示,再也没有那个该死的 "automation 服务器不能创建对象"

    所以,遇上这类问题的朋友,仔细想想有没有动这"filesystemobject"这个奶酪,应该都可以通过这个方法解决的。否则真的要重新安装操作系统,又要重新安装vs.net喔。


    方法四:
    在控制面板中打开“用户账户”,选择其中的“更改用户登录或注销的方式”时出现“automation服务器不能创建对象”的错误提示。(如果在执行其他操作时,出现这个错误提示,亦可按下面的方法解决,原因是一样的。)

    解决:主要是scripting.filesystemobject(fso 文本文件读写)被关闭了,开启fso功能即可,在“运行”中执行regsvr32 scrrun.dll。

    特别方法:在“运行”中执行regsvr32 shimgvw.dll


    方法五:
    不用重新安装操作系统和vs.net,但有些脚本需要微软的 msxml 控件才能进入。当使用 ie 5 以上版本的缺省安全模式时,会提示是否接受 msxml 控件,如果接受,msxml 将自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装 msxml 3.0。如果安装 msxml 3 后仍然出现“automation 服务器不能创建对象”错误,是因为您的机器禁止了所有的activex,一般将 ie 的安全模式设为“中”即可

    方法六:
    我的机器用了上面的方法没有解决问题,用下面的方法解决了问题,大家不妨可以试试:打开internet explorer “工具”菜单栏中的“选项”一栏,单击“安全”栏中的“自定义级别”选项卡,将第三项“对没有标记为安全的activex控件进行初始化和脚本运行”设置成“启用”即可。
    [/color]
    分享到:
    评论

    相关推荐

      javascript-网页客户端系统文件操作 功能实现核心:filesystemobject 对象,要在javascript中实现文件操作功能,主要就是依靠filesystemobject对象。

      这是使用javascript开发的xmpp的例子,只实现了连接xmpp服务器的操作, 包含主要文件如下: flxhr.js、strophe.flxhr.js、strophe.js、jquery-1.8.3.js、jquery-ui-1.9.2.custom.min.js、flensed.js、checkplayer.js...

      javascript—-文件操作 一、功能实现核心:filesystemobject 对象 要在javascript中实现文件操作功能,主要就是依靠filesystemobject对象。 二、filesystemobject编程 使用filesystemobject 对象进行编程很简单...

      html,css和javascript文件的框架结构 将javascript,css和图像文件加载到页面中 css元素的简单样式 使用javascript处理用户操作 此代码的来源: 执照 此项目已获得mit许可证的许可-有关详细信息,请参阅文件。

      requirejs - javascript 文件和模块加载器。 angularjs - 浏览器的应用程序开发框架。 knockoutjs - 声明性数据绑定框架 backbonejs - 浏览器的 mvc 框架 html5 - 语义标记、画布、css3 等... 调试 - 用于调试 ...

      javascript之旅 ...许可证:麻省理工学院-对代码执行任何操作,但是如果不起作用,请不要怪我。 传播这个词:tweet,在github上加星号,等等。 支持:如果您发现此模块有任何问题,请在github上发送电子邮件

      javascript和dom操作-第10周 第10周研究:列出并说明使我们能够从dom中选择元素javascript方法。 什么是文件对象? 没有从dom中选择元素的文档对象上还有哪些其他可用方法? 您本周学到的最喜欢的东西是什么? ...

      文件对象模型 html5画布 使用svg canvas和svg的框架 使用canvas和svg制作动画 dom操作 事件和事件模型 jquery概述 jquery插件 html模板 dom性能 考试准备 团队合作防御 考试 准备本地机器以与mocha和chai进行单元...

      sails.js将不同的布局文件与不同的javascript文件一起使用 这是有关如何在包含不同的javascript文件的情况下使用不同的layout.ejs文件的示例。 航行v0.11.0。 在我的项目中,我想利用sail的强大内置功能自动使用...

      javascript库样板 基于webpack 4的样板创建用于浏览器,node或both的库! 具有babel 7,sass,jest和带有hmr的开发工作区。 入门 下载 确定您的构建系统是否需要css支持(请参见下文) 确定项目目标: web , node...

      javascript家庭作业-javascript和dom操作 背景 唤醒绵羊皮! 地球外的威胁已经到了地球,我们在aliens-r-real收集了所有我们可以证明的目击者报告! 我们现在需要做的就是将这些信息在线发布,以供全世界查看,然后...

      javascript-lab 将此仓库分叉到您自己的帐户,然后将其克隆到您的计算机上。 html和css已经实现,因此您将练习编写javascript以实现示例功能。 请按照每个javascript文件中的注释中的说明进行操作。

      您可以阅读自述文件中的指南,以大致了解其操作方法。 您可以查看此存储库上的提交,以查看已完成使该应用程序正常工作的内容。 注意:提交间隔非常短,对于初学者来说更容易阅读。 (我建议以拆分模式查看它们)...

      --------------调用javascript的类 log----------------------写系统日志类 operatefile--------------文件操作的类 sorttip------------------排序提示的类 paging-------------------数据库分页的类...

      用javascript操作二进制数据,把它们变成16进制字符串。也可以把字符串变回二进制。还有按ieee-754标准读写int,float等数据类型,和datainputstream/dataoutputstream非常相似.

      javascript 测试用于在内存文件 api 中创建的 javascript 测试。 指令是: 使用 javascript 创建一个简单的文件系统 api(内存中),用于创建、读取、移动和删除文件和文件夹。 方法应该能够一次对多个项目进行操作...

      目录ppt如果想要查看ppt讲稿,依次执行以下操作:npm install -g nodeppt在本项目根目录下:nodeppt start浏览器会自动打开,选择ppt即可观看。比如选择nodejs即可观看nodejs的ppt内容。实例可以直接在浏览器中打开...

      自动使javascript文件漂亮又漂亮! 自动使您在网上遇到的javascript文件看起来很棒! 结合beautifier(http://jsbeautifier.org/)和prettify(http://code.google.com/p/google-code-prettify/)来解包/取消混淆,...

    global site tag (gtag.js) - google analytics