深入解析ASP核心技术
上QQ阅读APP看书,第一时间看更新

1.8 其他实用方法

FSO对象还提供了一些实用的小方法,如表1-12所示。

表1-12 FSO对象的实用方法

下例将演示各种实用方法的使用。

FSOUtil.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

Set fso = CreateObject("Scripting.FileSystemObject")

'组合路径
newpath = fso.BuildPath("c:\aaa", "Sub Folder")
Response.Write newpath & "<br>"

'相对路径转为绝对路径
absolutePath = fso.GetAbsolutePathName("abc.txt ")
Response.Write absolutePath & "<br>"

'路径中文件夹的名字
baseName = fso.GetBaseName("c:\aa\bb")
Response.Write baseName & "<br>"

'路径中文件的名字(不包括扩展名)
baseName = fso.GetBaseName("c:\aa\bb\cc.txt")
Response.Write baseName & "<br>"

'驱动器名称
driveName = fso.GetDriveName("c:\aa\bb\cc.txt")
Response.Write driveName & "<br>"

'文件扩展名
extensionName = fso.GetExtensionName ("c:\aa\bb\cc.txt")
Response.Write extensionName & "<br>"

'文件名
fileName = fso.GetFileName ("c:\aa\bb\cc.txt")
Response.Write fileName & "<br>"

'文件版本
fileVersion = fso.GetFileVersion ("C:\WINDOWS\hh.exe")
Response.Write fileVersion & "++++<br>"

'父文件夹路径
parentFolderName = fso.GetParentFolderName("c:\aa\bb\cc.txt")
Response.Write parentFolderName & "<br>"

'生成随机文件名
tempName = fso.GetTempName()
Response.Write tempName & "<br>"

Set fso = Nothing
%>

运行结果如图1-9所示。

图1-9 各种实用方法的使用

除了GetTempName方法,其他方法都有参数path。这些方法都不会验证这个path是否实际存在,只是根据字符串中的表面关系来取得结果。

在实际应用中,GetAbsolutePathName方法可能让人比较困惑,因为这里有一个当前路径的概念。在之前的例子中,参数的路径使用的都是绝对路径,也就是以“C:\”“D:\”等开头的完整路径,实际上这些参数都是可以使用相对路径的。使用相对路径就需要知道当前路径,FSO默认的当前路径是系统目录的system32文件夹(如XP就是C:\WINDOWS\system32),而不是当前ASP文件所在的路径。比如创建文件的时候,只写了一个文件名,那么这个文件就被创建到system32目录下,而不是当前ASP文件所在的目录下。

GetAbsolutePathName方法的参数与结果的对应关系也不利于人理解,举例如表1-13所示。

表1-13 GetAbsolutePathName方法举例

看看结果,是不是有些不得要领呢?实际上,这个语句类似于DOS命令中的cd命令。“C:”和“D:”等(不带反斜杠)是切换盘符的,而每个盘符都保持一个当前路径,所以切换后的当前路径是该盘符之前保持的那个路径。“C:\”和“D:\”等(带反斜杠的)则是切换到盘符根目录的。

DOS命令的执行演示如图1-10所示。

图1-10 DOS命令执行演示

相对路径让人不易分辨,所以还是尽量使用绝对路径。