vbscript 中的FileSystemObject对象

前端之家收集整理的这篇文章主要介绍了vbscript 中的FileSystemObject对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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,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方法不能得到换行符。因此,如果需要的话,您只能自行插入换行符。第一次读完后关闭文件。因为没有提供移动指针到头的方法

猜你在找的VB相关文章