一、功能实现核心: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;