FileSystemObject (FSO)组件可以用来处理系统驱动器,文件夹,和文件。因为它是一个ActiveX控件,所以它能被js,vbs等文件使
用,以实现对机器文件系统的操作。
下面将总结一下FSO中的对象和方法,其实FSO中大多数的方法都能顾名思义,很简单,所以对于大多数函数都只是简单的罗列一下。
一.新建FileSystemObject对象
var fso = new ActiveXObject("Scripting.FileSystemObject");
注意:FileSystemObject对象只能创建一次!
二.FileSystemObject对象下的相关函数
1.Driver相关:
DriveExists(drivespec):判断驱动器是否存在,参数可以是"C","C:","C:\","\\computer\share"等形式
GetDrive ( drivespec ):获取Driver对象,获取后可以对该对象进行更进一步的操作,参数可以
是"C","C:","C:\","\\computer\share"等形式
GetDriveName(path):获取一个地址的驱动名,这个函数只关注path字符串,不关注该路径是否存在
Drives属性:获取所有的driver
2.Folder相关:
FolderExists(folderspec):判断Folder是否存在
CreateFolder(foldername):创建Folder,并返回Folder对象
GetFolder(folderspec):获取Folder对象,获取后可以对该对象进行更进一步的操作
DeleteFolder ( folderspec[, force] ):删除Folder,默认情况下不会删除只读文件夹,但是可以通过将force设为true来删除只读文
件夹.
CopyFolder ( source, destination[, overwrite] ):复制文件夹.当overwrite为true时会覆盖原有的文件夹。有如下几种复制方法
。
a.当source只是一个简单的路径,且destination后面不以"\"结束时,将新建destination文件夹,并将source下的文件都拷贝到
destination下。
filesys.CopyFolder("c:\\test1","c:\\test3");
拷贝test1下的文件到test3,如果test3文件夹不存在将先新建test3文件夹。
b.当source只是一个简单的路径,且destination后面以"\"结束时,将认为destination文件夹已经存在,并将source文件夹拷贝到
destination下。
filesys.CopyFolder("c:\\test1","c:\\test2\\");
拷贝test1到test2文件夹下,如果test2文件夹不存在将报错。
c.当source是通配符的形式,不管destination后面是否以"\"结束,都将认为destination文件夹已经存在,并将source代表的所有文
件夹拷贝到destination下。
filesys.CopyFolder("c:\\test1\\*","c:\\test2\\");
拷贝test1下的所有文件夹(不包括文件)到test2文件夹下.
MoveFolder ( source, destination ):移动文件夹,用法参见CopyFolder函数.
3.File相关:
FileExists(filespec):判断File是否存在
CreateTextFile(filename[, overwrite[, unicode]]):创建File对象并返回TextStream对象
OpenTextFile(filename[, iomode[, create[, format]]]):打开文件并返回TextStream对象
iomode的值为1时为只读(默认),为2时为写,为8时为append模式.值为-2时用系统默认的方式打开.为-1时按Unicode打开,为0是按
ASCII打开.
GetFile(filespec):获取File对象,获取后可以对该对象进行更进一步的操作
DeleteFile ( filespec[, force] ):删除File,默认情况下不会删除只读文件,但是可以通过将force设为true来删除只读文件
filesys.DeleteFile("c:\\test1\\*");将删除test1目录下所有文件
CopyFile ( source, destination[, overwrite] ):复制文件.当overwrite为true时会覆盖原有的文件夹。有如下几种复制方法。
a.当source只是一个简单的路径,且destination后面不以"\"结束时,将新建destination文件夹,并将source拷贝到destination下
。
filesys.CopyFolder("c:\\test1\1.txt","c:\\test3.txt");
拷贝test1下的文件到test3,如果test3文件夹不存在将先新建test3文件夹。
b.当source只是一个简单的路径,且destination后面以"\"结束时,将认为destination文件夹已经存在,并将source文件夹拷贝到
destination下。
filesys.CopyFolder("c:\\test1\1.txt","c:\\test2\\");
拷贝test1到test2文件夹下,如果test2文件夹不存在将报错。
c.当source是通配符的形式,不管destination后面是否以"\"结束,都将认为destination文件夹已经存在,并将source代表的所有文
件夹拷贝到destination下。
filesys.CopyFile("c:\\test1\\*","c:\\test2\\");
拷贝test1下的所有文件(不包括文件夹)到test2文件夹下.
MoveFile ( source, destination ):移动文件,用法参见CopyFile函数.
GetFileVersion(filespec):获取文件的版本信息,大多数文件都没有版本信息的,所以这个函数经常返回空字符串.
4.路径的处理相关:
下面的一些函数除了GetSpecialFolder外都只是单纯的字符串处理操作,并不关注相应的路径或文件是否存在.
BuildPath(path, name):根据路径和名字生成完整的路径.
filesys.BuildPath("c:\\jingle","2" )将返回"c:\jingle\2"
GetAbsolutePathName(pathspec):根据相对路径或模糊的路径得到绝对路径.绝对路径的获取和语句执行的当前路径有关.
GetParentFolderName(path):获取路径的上级路径,这个函数只关注path字符串,不关注该路径是否存在
GetFileName(pathspec):根据路径获取文件名称(包括后缀).
GetBaseName(path):获取文件名(不包括后缀)
GetExtensionName(path):获取文件后缀
GetTempName():生成以.tmp为后缀的临时文件名
GetSpecialFolder(folderspec):用于获取几个特殊的系统目录.参数0将获取Windows目录对象,1获取System目录对象,2获取Temp目录
对象
下面的例子将你的临时文件的地址写入testfile.txt中.
var fd = filesys.GetSpecialFolder(2);
var myfile = filesys.CreateTextFile("c:\\testfile.txt");
myfile.WriteLine(fd.Path);
myfile.close();
5.一个特殊的函数:
GetStandardStream(standardStreamType [, unicode ]):获取相应的TextStream对象.参数为0是输入流,1是输出流,2是错误流.
这个函数在js脚本里面其实并不怎么用得上
三.Drive的属性
AvailableSpace:获取可用空间大小(bytes)
FreeSpace:同上,区别只在于在某些系统下显示的格式不一样
TotalSize:获取总大小(bytes)
DriveLetter:Drive的相应字符,network drive将返回空字符串
DriveType:0未知,1:Removable,2:Fixed,3: Network,4:CD-ROM,5:RAM Disk
IsReady:对Removable和CD-ROM来说只有相应的设备可以访问了才返回true,当该属性为false时,很多其他属性无法获取
Path:路径
FileSystem:返回FAT, NTFS, and CDFS等值
RootFolder:返回Driver所代表的路径的Folder对象。
SerialNumber:返回SerialNumber,这个属性主要用来确保插入了正确的removable media
ShareName:返回network drive的路径
VolumeName:返回VolumeName信息,VolumeName就是咱自己对盘符定义的名字
四.Folder的方法和属性
Folder的方法有Copy,Delete,Move,CreateTextFile这些方法的用法分别参见
FileSystemObject.CopyFolder,FileSystemObject.DeleteFolder,FileSystemObject.MoveFolder,FileSystemObject.CreateTextFil
e方法。
Attributes:文件夹的属性.将返回下面数值的或值.
0:Normal
1:ReadOnly可设
2:Hidden可设
4:System可设
8:Volumn
16:Directory是否是文件夹
32:Achive即文件在上次备份后被改动过,可设
1024:Alias是否是链接或快捷方式
2048:Compressed是否被压缩
DateCreated:创建时间
DateLastAccessed:最后访问时间
DateLastModified:最后修改时间
Drive:文件夹所在的Driver letter
Files:文件夹下的所有文件,不包括文件夹,可用Count属性得到其文件数,用Item依次进行访问。
SubFolders:文件夹下所有的子文件夹,可用Count属性得到其文件夹数,用Item依次进行访问。
Type:文件夹类型,一般都是"File Folder",有些特殊的文件夹类型为"Folder"
Size:文件夹大小
Path:路径
ParentFolder:父文件夹路径
Name:文件夹名称,可写
ShortPath:返回8.3命名规则的短路径
ShortName:返回8.3命名规则的短文件夹名称
IsRootFolder:判断是否是根文件夹
五.File的方法和属性
Folder的方法有Copy,Delete,Move,OpenAsTextStream这些方法的用法分别参见
FileSystemObject.CopyFile,FileSystemObject.DeleteFile,FileSystemObject.MoveFile,FileSystemObject.CreateTextFile方法
。
Attributes:文件的属性.将返回下面数值的或值.
0:Normal
1:ReadOnly可设
2:Hidden可设
4:System可设
8:Volumn
16:Directory是否是文件夹
32:Achive即文件在上次备份后被改动过,可设
1024:Alias是否是链接或快捷方式
2048:Compressed是否被压缩
DateCreated:创建时间
DateLastAccessed:最后访问时间
DateLastModified:最后修改时间
Drive:文件所在的Driver letter
Type:文件类型,文件类型是根据文件的后缀来判断的,操作系统中储存有文件后缀和文件类型的对应关系,根据文件的后缀就能得到
文件类型,如果有的后缀找不到给定的文件类型,就直接用后缀来表示文件类型,比如文件后缀为.yy。则文件类型为YY File。
Size:文件大小
Path:路径
ParentFolder:所在文件夹路径
Name:文件名称
ShortPath:返回8.3命名规则的短路径
ShortName:返回8.3命名规则的短文件名称
六.TextStream的方法和属性
方法
这周公司要出sp3了,忙着测试产品包,我负责测试js的产品包,必须保证每一个范例都可以运行,测试了一天发现了不少问题,其中一个就是使用select的范例在ie8时显示出问题,ie7下直接显示不了option,经过查资料将其兼容了,这里记录一下。
方法1:
代码如下:
<head>
<title></title>
<script type="text/javascript">
function init()
{
var s = document.getElementById("s");
s.add(new Option("A"));
}
</script>
</head>
<body onload="init()">
<select id="s" ></select>
</body>
</html>
测试结果:Firefox、Chrome、IE9、IE8、IE7、Safari、Opera显示正常。
方法2:
代码如下:
<head>
<title></title>
<script type="text/javascript">
function init()
{
var s = document.getElementById("s");
s.appendChild(new Option("B"));
}
</script>
</head>
<body onload="init()">
<select id="s" ></select>
</body>
</html>
测试结果:Firefox、Chrome、Safari、Opera显示正常,IE9、IE8、IE7下不能显示。
方法3:
代码如下:
<head>
<title></title>
<script type="text/javascript">
function init()
{
var s = document.getElementById("s");
s.add(new Option("A"));
s.insertBefore(new Option("B"), s.options[1]);
}
</script>
</head>
<body onload="init()">
1、首先在地址栏中输入opera:config后回车,就会进入首选项编辑器。
2、然后在首选项编辑器的“快速搜索”中输入hardware,把出现的“Enable Hardware Acceleration”参数改为1,再输入webgl,把出现的“Enable WebGL”参数改为1。点击保存按钮。
3、重新启动opera。
那如何知道硬件加速是否成功启用呢?
现在在地址栏输入opera:gpu,在跳出的GPU摘要页面中就可以看到。如果显示的是“Hardware acceleration enabled”等信息,那么硬件加速成功启用,如果是disable,那么还是软件加速。
造成硬件加速启用失败的原因:
目前opera的硬件渲染对于老旧显卡支持不是太好,如果你电脑的显卡型号不在支持的范围内,就会自动退回到软件渲染模式。
本文链接