vbscript 中的FileSystemObject对象

来源:互联网 发布:怎么修改淘宝会员名 编辑:程序博客网 时间:2024/05/29 15:43
FileSystemObject对象提供对计算机文件系统的访问。该对象包含了许多子对象,例如file对象、folder对象等等。它们可以通过FileSystemObject对象的丰富的方法获得。FileSystemObject对象在VBscript   和   JScript两种语言中是完全一样的,即有相同的属性和方法,以及它们的语法形式。只是当它们与其它语言元素结合时,才因各自的语言不同表现出不同。在VBscript和JScript两种语言中创建FileSystemObject对象的方法也不同。 

一   创建FileSystemObject对象 

1   在VBscript中创建,方法如下: 

Dim   fso 
Set   fso   =   CreateObject( "Scripting.FileSystemObject ") 

2   在JScript中创建,方法如下: 

var   fso   =   new   ActiveXObject( "Scripting.FileSystemObject "); 

在VBscript中使用CreateObject函数,语法 
  CreateObject(servername.typename   ) 
servername是应用程序名称,typename是要创建的对象类型或类。 
在JScript中使用ActiveXObject对象,所以前面要有new关键字。语法 
  new   ActiveXObject(servername.typename)   
ActiveXObject对象没有什么方法和属性,其功能与VB的CreateObject函数一样,就是启用并返回   Automation   对象的引用。 

二   FileSystemObject对象的属性 

FileSystemObject对象只有一个属性Drives,它返回一个驱动器集合,包含了本地机器上所有可用的   Drive   对象。可移动媒体的驱动器不需要插入媒体就可以出现在   Drives   集合中。 

目标任务1   显示可用的驱动器列表。 

代码   
function   ShowDriveList(){ 
var   fso,   s,   n,   e,   x; 
fso   =   new   ActiveXObject( "Scripting.FileSystemObject "); 
e   =   new   Enumerator(fso.Drives); 
s   =   " "; 
for   (;   !e.atEnd();   e.moveNext()){ 
 x   =   e.item(); 
 s   =   s   +   x.DriveLetter; 
 s   +=   "   -   "; 
 if   (x.DriveType   ==   3) 
  n   =   x.ShareName; 
 else   if   (x.IsReady) 
    n   =   x.VolumeName; 
      else 
    n   =   "[驱动器未就绪] "; 
 s   +=   n   +   " <br> "; 

return(s); 

document.write   (ShowDriveList()); 

代码注释 

对象e是利用驱动器集合创建了一个枚举对象,它的每个元素是一个驱动器,因此可以使用Drive对象的属性和方法。这里用到了atEnd()-列表结束,moveNext()-指向下一个驱动器,item()-得到当前驱动器,DriveLetter-驱动器字母,DriveType-驱动器类型(硬盘、CD-ROM等),ShareName(网络驱动器名),IsReady-驱动器是否就绪,VolumeName-磁盘卷号。 

三   FileSystemObject对象的方法 

FileSystemObject对象的方法非常丰富,本文仅给出各种方法的语法功能简表,然后重点介绍读写文本文件的方法。

BuildPath   方法在已存在路径后追加名称。   

CopyFile   方法从一个位置向另一个位置复制一个或多个文件。   

CopyFolder   方法将文件夹连同子文件夹从一个位置复制到另一个位置。   

CreateFolder   方法创建文件夹。   

CreateTextFile   方法建指定的文件名并返回一个TextStream对象,可使用这个对象对文件进行读写。   

DeleteFile   方法删除一个或多个指定文件。   

DeleteFolder   方法删除一个或多个指定的文件夹及其内容。   

DriveExists   方法判断驱动器是否存在(T/F)   

FileExists   方法判断文件是否存在(T/F)   

FolderExists   方法判断文件夹是否存在(T/F)   

GetAbsolutePathName   方法根据提供的路径说明返回明确完整的路径。   

GetBaseName   方法返回字符串,该字符串包含路径中最后成分中的基本名称,不包含文件扩展名。   

GetDrive   方法返回相应于指定路径中驱动器的   Drive   对象。   

GetDriveName   方法根据指定路径返回包含驱动器名称的字符串。   

GetExtensionName   方法返回包含路径中最后成分扩展名的字符串。   

GetFile   方法根据指定的路径中的文件返回相应的   File   对象。   

GetFileName   方法返回指定路径的最后成分,但指定的路径不能只是驱动器说明。   

GetFolder   方法根据指定路径中的文件夹返回相应的   Folder   对象。   

GetParentFolderName   方法根据指定路径中的最后成分返回包含其父文件夹名称的字符串。   

GetSpecialFolder   方法返回指定的特殊文件夹对象。有window,   system,   temp。   

GetTempName   方法返回一个随机产生的临时文件或文件夹名,有助于执行那些需要临时文件或文件夹的操作。   

MoveFile   方法从一个位置向另一个位置移动一个或多个文件。   

MoveFolder   方法从一个位置向另一个位置移动一个或多个文件夹。   

OpenTextFile   方法打开指定的文件并返回一个   TextStream   对象,可以通过这个对象对文件进行读、写或追加。   

四   TextStream对象 

文本流对象TextStream是FileSystemObject对象的子对象,利用它可以读写和使用文本文件。该对象需要使用FileSystemObject对象的OpenTextFile或CreateTextFile方法来打开或创建。下面都假定fso是已经创建的FileSystemObject对象。 

在VB中, 
Set   MyFile   =   fso.CreateTextFile( "c:\testfile.txt ",   True) ’创建,如文件存在就删除它 
Set   f   =   fso.OpenTextFile( "c:\testfile.txt ",   ForWriting,   True)   '打开 

在JS中, 

var   a   =   fso.CreateTextFile( "c:\\testfile.txt ",   true); 
var   a   =   fso.OpenTextFile( "c:\\testfile.txt ",   ForAppending,   false);   //不创建新文件 

注意,这在两种语言中没有什么差别,只是VB的语法规定创建对象要用Set语句,而JS中var也可用于说明对象。重要的是下面要讨论的打开与创建这两种方法的功能和语法结构上的差别。 

CreateTextFile方法的语法形式: 

fso.CreateTextFile(Filename,[Overwrite],[Unicode])   

Filename   包含文件路径名的字符串,可以是文件的全路径名,包括驱动器名和目录名,或者也可以只是文件名,如果只包含文件名的话,文件将被创建在站点的根目录下。   

Overwrite   布尔量,设置成False时在创建新文件时不删除已存在的同名文件,并报告错误。该参数是可选的,如果没有赋值系统默认为true,就删除已存在的同名文件。  

Unicode   可选参数。布尔值指明是否以Unicode或ASCII   文件格式创建文件。如果以Unicode   文件格式创建文件,则该值为True;如果以ASCII文件格式创建文件,则该值为False。如果省略此部分,则假定创建ASCII文件。   

OpenTextFile   方法的语法如下   :   

fso.OpenTextFile(Filename,[IOmode],[Create],[Format])   

Filename   必须的变量,同   CreateTextFile   的filename   。   

IOmode   可选的常量,表示读写模式。取值为下列两个常数之一ForReading=1或ForAppending=8,如果mode为1,文件以只读方式打开,如果为8,则文件以追加的方式打开。  

Create   可选的布尔量,如果其值为   True,当文件不存在时就自动创建一个空的文件。如果为   False,就会在文件没找到时产生一个出错信息,其默认值是False,建议将其设为True,以避免在打开文件时检查是否出错,就可能会中断运行。  

Format   可选,表示文件的格式。可以选择三种值   -2、-1、和0,分别对应于:系统缺省、unicode   和   ASCII。  

五   TextStream对象的属性 

AtEndOfLine 本行是否结束?只读属性。如果文件指针位于当前行的行尾符之前,则返回true,否则返回   false。   

AtEndOfStream   文件是否结束?只读如果文件指针正好位于文件结尾符,则返回true,否则返回false。   

Column   只读属性,返回当前字符在当前行中的列号。如果已换行,但在其他任何字符之前,Column=1。   

Line   只读属性,返回TextStream文件中当前行的行号。在文件刚打开但还没有写入任何字符之前Line=1。   

六   TextStream对象的方法 

Close() 关闭打开的TextStream   文件。   

Read(字符数)    从TextStream   文件中读取指定数量的字符,并返回由此得到的字符串。   

ReadAll(   ) 读取   TextStream   文件的全部内容并返回由此得到的字符串。   

ReadLine()   从文件中读取一整行(一直到换行符,但不包括换行符),并返回由此得到的字符串。   

Skip(字符数)   在读取TextStream   文件时跳过指定个数的字符。   

SkipLine(   )    在读取TextStream   文件时跳过下一行。   

Write(string)   将给定的文本块写入到一个TextStream   文件中。   

WriteBlankLines(行数)   将指定数量的空行(即只含有换行符)写入到一个TextStream   文件。   

WriteLine([string]) 向TextStream   文件中写入给定的字符串和一个换行符。   


-------------------------------------------------------------------------------- 

目标任务2   在C盘根目录上生成一个文本文件Mytest.txt,其中包含自动写入的若干行。 

function   textwrite()   { 
var   fs   =   new   ActiveXObject( "Scripting.FileSystemObject "); 
var   Overwrite   =   true; 
var   ForAppending=8   ; 
var   Forwrite=   -2   ; 
var   Unicode   =   false   ; 
var   path   =   "c:\\ "; 
var   filename= "mytest.txt "; 
var   mytext   =   fs.CreateTextFile(path   +filename,Overwrite)   ; 
var   strings   =   new   Array(5); 
var   D   =   new   Date(); 
strings[0]= "本文件是由程序自动生成的 ";   
strings[1]= "Today   is   "   +D.getVarDate(); 
strings[2]= "今天是 "   +   D.getYear()   +   "年 "   +   D.getMonth()+   "月 "   +   D.getDay()+ "日 "   ; 
strings[3]= "现在时间是   "   +D.getHours()   + ": "   +   D.getMinutes();   
strings[4]= "本文件的路径是 "   +   path   +filename;   
for   (i=0   ;i <5;i++)   
mytext.writeline(strings[i])   ; 
mytext.close()   ; 
alert( "文件 "   +   filename   + "   已经生成 "); 


代码注释 

创建文件mytext时,IOmode   用verwrite=true,如果文件存在时原有内容将被清除。 

说明 在第一次运行本例程以前,先运行一次目标任务3,以便观看文件不存在的情形。运行时如果出现警告“可能不安全,是否允许运行?”,您尽管回答“是”。因为有写盘操作,这是这种不安全。 

目标任务3   读出并显示目标任务2建立的文件。 

function   textRead()   { 
var   fs   =   new   ActiveXObject( "Scripting.FileSystemObject "); 
var   Overwrite   =   true; 
var   ForAppending=8   ; 
var   ForReading=   1   ; 
var   Unicode   =   false   ; 
var   path   =   "c:\\ "; 
var   filename= "mytest.txt "; 
var   mytext   =   fs.OpenTextFile(path   +filename,ForReading,   false)   ; 
var   ss= " "   ; 
document.write(mytext.ReadAll())   ; 
mytext.close()   ; 
mytext   =   fs.OpenTextFile(path   +filename,ForReading,   false)   ; 
document.write   ( " <p>   下面用ReadLine方法读出   <p> "); 
ss   =   mytext.ReadLine()   ; 
document.write   (ss+ " <br> "); 
mytext.skipLine(); 
do   
 document.write   (mytext.ReadLine()); 
while(   !mytext.AtEndOfStream); 
mytext.close()   ; 


代码注释 

打开文件使用了ForReading只读模式,建议读者把它改为ForAppending,多次运行它以观看效果。本例程两次读出全文。第一次用ReadAll,第二次是逐行读出。可以看出,READ方法不能得到换行符。因此,如果需要的话,您只能自行插入换行符。第一次读完后关闭文件。因为没有提供移动指针到头的方法。 






原创粉丝点击