VBS基础篇 - FileSystemObject对象详解 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
下面是转摘的关于FileSystemObject的详细介绍,TextStream是其中的一个子对象 。 前言 最近一直在学VBScript,网上相关的教程也有很多,但大多数的对象都放在ASP中讲解,对于没有学过ASP的同学来说就非常郁闷了 。所以打算把在学习FileSystemObject及TextStream中所常用的属性和方法写出来供大家来学习,如有不妥的地方请予以指出 。 备注:所有的脚本均在QTP 9.0中测试过 。 FileSystemObject对象概述 FileSystemObject 对象的作用:提供对计算机文件系统的访问,它允许我们在代码内操作文本文件、文件夹及驱动器 。FileSystemObject 对象提供一个属性和一系列方法,可用它们来操纵 FileSystemObject 对象实现的一些从属对象 。这里提供了全部的内容概要,然后介绍每一个从属对象 。 一、FileSystemObject 对象的属性 FileSystemObject 对象只有一个属性,它用于得到当前机器上的所有有效驱动器的列表,如表1所示:
‘如下脚本就可以获得FileSystemObject的Drivers属性 Set objFSO = CreateObject ("Scripting.FileSystemObject") Set colDrivers = objFSO.Drivers 正如已经看到的,FileSystemObject 对象包含一个属性——Drives,它返回一个包括本地计算机上所有可用驱动器的集合 。 Drives 集合里的每个条目是一个 Drive 对象 。Drive 对象的属性如表2所示:
因此,通过使用 Drives 集合里的 Drive 对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高 。我们也可以得到关于该驱动器的信息 。 示例: ' 创建FileSystemObject对象 Set objFSO = CreateObject("Scripting.FileSystemObject") ' 创建Drives集合,并赋值给colDrives Set colDrives = objFSO.Drives ' 遍历Drives集合 For Each objDrive in colDrives '判断驱动器是否已准备好 If objDrive.IsReady Then msg = "驱动器的名称为:" & objDrive.DriveLetter & " " msg =msg & "驱动器文件系统的类型:" & objDrive.FileSystem &" " msg = msg & "驱动器的总容量:" & int(objDrive.TotalSize/(1024*1024*1024)) & "G " msg = msg & "剩余空间的总量:" & int(objDrive.FreeSpace/(1024*1024*1024)) & "G " End If Next reporter.ReportEvent micDone ,"遍历Drives集合",msg 备注:在系统上运行这段程序以前有一点要注意 。如果在 A 驱动器里没有磁盘,或 CD-ROM 驱动器里没有光盘,将得到一个错误提示:“Disk Not Ready” 。除了 DriveLetter 属性和 DriveType 属性外,在使用其他属性和方法前,通过检查每个驱动器的 IsReady 属性,可以保护该页面 。 二、FileSystemObject 对象的方法 1. 与驱动器有关的方法
DriveExists的使用 方法名:DriveExists(drivespec) 说明:如果在 drivespec 中指定的驱动器存在,则返回 True,否则返回 False 。drivespec 参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径 示例: ' 创建FileSystemObject对象 Set objFSO = CreateObject ("Scripting.FileSystemObject") For intCode = 65 To 90 'ANSI codes for 'A' to 'Z' strLetter = Chr(intCode) 'Chr:返回与指定的 ANSI 字符代码相对应的字符 。 If objFSO.DriveExists(strLetter) Then '判断相应的盘符是否存在,如存在输出 Reporter.ReportEvent micDone,"Show Drive”,” Found drive " & strLetter End If Next 另外,如果已知要访问的驱动器、文件夹或文件 。可以直接对其使用 GetDrive、GetFolder、GetSpecialFolder 和 GetFile 方法 。 2. 与文件夹有关的方法及属性 用FileSystemObject对象来操作文件夹的方法:
CopyFolder的使用 方法名:CopyFolder(source,destination,overwrite) 说明:将文件夹从某位置递归复制到另一位置 。详细说明请查看表4 。 示例: ' 创建FileSystemObject对象 Set objfso = createobject("scripting.FileSystemObject") ' 将D:/test下所有的内容复制到c:/123 objfso.CopyFolder "D:/test","c:/123" 注:如果c:/123不存在,则QTP将自动创建它 CreateFolder及DeleteFolder的使用 方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force) 说明:创建/删除一个路径名为 foldername 的文件夹 。详细说明请查看表4 。 示例: ' 创建FileSystemObject对象 Set objfso = createobject("scripting.FileSystemObject") ‘ 在c:/创建new folder文件夹,如果文件夹存在,则会出现错误提示 objfso.CreateFolder("c:/new folder") ‘ 删除c:/new folder文件夹 objfso.DeleteFolder("c:/new folder") 注:DeleteFolder无论文件夹是否包含内容,都将删除该文件夹 FolderExists的使用 方法名:FolderExist(folderspec) 说明:如果指定的文件夹存在,则返回 True;否则返回 False 。详细说明请查看表4 。 示例: Function hanshu(strpath) Dim objfso,objset ‘ 创建FileSystemObjec对象 Set objfso = CreateObject("Scripting.FileSystemObject") ‘ 判断在指定的路径中是否有 If Not objfso.FolderExists(strpath) Then objset = objfso.CreateFolder(strpath) else objset = objfso.DeleteFolder(strpath) End If hanshu = objset End Function hanshu("c:/new folder") GetAbsolutePathName的使用 方法名:GetAbsolutePathName(pathspec) 说明:从提供的指定路径中返回完整且含义明确的路径 。详细说明请查看表4 。 示例: Dim objfso ‘创建FileSystemObject对象 Set objfso = createobject("Scripting.FileSystemObject") ‘返回当前的目录,下面两条语句返回一样的结果 msgbox (objfso.GetAbsolutePathName("")) msgbox (objfso.GetAbsolutePathName("C:")) GetFolder的使用 方法名:GetFolder(folderspec) 说明:返回与指定的路径中某文件夹相应的 Folder 对象 。可以根据所返回的Folder 对象,再去访问该Folder 对象所持有的属性 。 示例: Dim objfso,objset '创建FileSystemObject对象 Set objfso = createobject("Scripting.FileSystemObject") '返回C:/testing的Folder的对象 Set objset = objfso.GetFolder("C:/testing") ' 根据所返回的Folder对象,去访问其相关的属性 reporter.ReportEvent micDone ,"Folder对象的相关属性","文件夹创建的日期:" & objset.DateCreated &"; 文件夹所在的驱动:" & objset.Drive & "; 文件夹的名字:" & objset.Name 注:关于Folder对象的属性,将在下面会详细介绍 GetParentFolderName的使用 方法名:GetParentFolderName(pathspec) 说明:返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹 。 示例: Dim objfso '创建FileSystemObject对象 Set objfso = createobject("Scripting.filesystemobject") '使用GetParentFolderName方法来返回上一层文件夹 msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins")) GetSpecialFolder的使用 方法名:GetSpecialFolder(folderspec) 说明:返回指定的特殊文件夹 。详细说明请查看表4 。 示例: Dim fso,tempName Set fso = CreateObject("Scripting.FileSystemObject") 'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹 Set tempName = fso.GetSpecialFolder(2) msgbox tempName MoveFolder的使用 方法名:MoveFolder(source,destination) 说明:将一个或多个文件夹从某位置移动到另一位置 。详细说明请查看表4 。 示例: Dim sourcepath,destination sourcepath = "C:/testing" destination = "C:/123" '调用MoveFolders方法 call MoveFolders(sourcepath,destination) Sub MoveFolders(sourcepath,destination) Dim fso '创建FileSystemObject对象 Set fso = CreateObject("Scripting.FileSystemObject") '使用MoveFolder方法,将testing文件夹的内容移动到123文件夹下 fso.MoveFolder sourcepath,destination End Sub 注:如果脚本在运行前文件夹123已存在,则运行是会发生错误;在不同的磁盘下MoveFolder方法不能用 上面提到的Folder方法是基于FileSystemObject 对象的,现在我们来看看基于Folder对象的方法 。 Folder对象所提供的方法 Folder 对象提供一组可用于复制、删除和移动当前文件夹的方法 。这些方法的运行方式与 FileSystemObject 对象的CopyFolder、DeleFolder 和 MoveFolder 方法相同,但这些方法不要求 source 参数,因为源文件就是这个文件夹 。 备注:CopyFolder、DeleFolder等方法是基于FileSystemObject 对象的;而下面的Copy、Delete等方法是基于FileSystemObject对象下的Folder对象,他们实现的功能是类似的 。
Copy的使用 方法名:Copy(destination,overwrite) 说明:将文件夹的所有内容,复制到destination文件夹中 。详细说明请见表5 示例: Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '将testing中的所有内容复制到123文件夹中 objset.Copy("d:/123") End Sub 备注:如果目标文件夹不存在,则脚本在运行是将自动创建 Delete的使用 方法名:Delete(force) 说明:删除文件夹及里面的所有内容 。详细说明请见表5 示例: Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '将testingw文件夹及文件夹里所有的内容全部删除 objset.Delete(True) End Sub 备注:如果文件夹属性为只读且Delete的参数为False,则脚本在运行是将提示“没有权限”;当文件夹不存在时,将提示“路径未找到” 。 Move的使用 方法名:Move(destination) 说明:将文件夹及里面所有的内容移动到 destination 指定的文件夹 。详细说明请见表5 示例: Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '使用Move()将testing文件夹及里面所有的内容,移动到目标文件夹123中 objset.Move("C:/123") End Sub 备注:如果目标文件夹123已存在,则脚本运行时提示“文件已存在”;如果目标文件夹123在D:/,则脚本运行使提示“没有权限” CreateTextFile的使用 方法名:CreateTextFile(filename,overwrite,unicode) 说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件 。详细说明请见表5 。 示例: Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件 objset.CreateTextFile "myClass2.doc",true End Sub 备注:CreateTextFile()所创建的文件类型是根据所提供的扩展名来确定的,如也可以写成myClass2.txt、myClass.exe等等;FileSystemObject对象也可以调用CreateTextFile(),我们可以将上面的代码改写成:
Folder对象所提供的属性:
如上面提到的,我们可以使用下面的脚本来访问Folder对象 Dim objfso,objset '创建FileSystemObject对象 Set objfso = createobject("Scripting.FileSystemObject") '返回C:/testing的Folder的对象 Set objset = objfso.GetFolder("C:/testing") 注:通过Folder对象我们就可以访问其提供的方法及属性 Drive、DateCreated、Name属性的使用 示例: Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '通过Folder对象来访问Folder属性 reporter.ReportEvent micDone ,"测试Folder属性","文件夹所在的磁盘为:" & objset.Drive & " 文件夹所创建的日期:" & objset.DateCreated & " 文件夹的名字为:" & objset.Name End Sub SubFolers属性的使用 示例: Dim sourcepath sourcepath = "C:/Program Files/Common Files" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset,objFolders,FolderName,i i = 0 Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) 'SubFolders属性将返回所有子文件夹对应的Folder集合 Set objFolders = objset.SubFolders '遍历Folder集合,统计出共有多少个文件夹,及相关文件夹的名字 For Each objFolder in objFolders i = i +1 'vbcr为换行符 FolderName = FolderName + objFolder.Name + vbcr Next msgbox ("共有" & i &"个文件夹,文件夹的名字为:" & FolderName) End Sub Files属性的使用 示例: Dim objFso,objGetFolder,intCount,strFileName intCount = 0 '创建FileSystemObject对象 Set objFso= CreateObject("Scripting.FileSystemObject") '使用GetFolder()获得文件夹对象 Set objGetFolder = objFso.GetFolder("C:/test") '遍历Files集合并显示文件夹中所有的文件名 For Each strFile in objGetFolder.Files intCount = intCount + 1 strFileName =strFileName & "第" & intCount & "个文件夹名为:" & strFile.Name & vbcr Next msgbox strFileName 3. 以文件有关的方法及属性 用FileSystemObject对象来操作文件的方法:
CopyFile及MoveFile的使用 方法名:CopyFile(source,destination,overwrite) 说明:将一个或多个文件从某位置复制到另一位置 。详细说明请见表7 方法名:MoveFile(source,destination) 说明:将 source 指定的一个或多个源文件移动到 destination 指定的目的文件夹 。 示例: Dim sourcepath,targetpath sourcepath = "C:/testing/*.txt" targetpath = "C:/123/" Call FolderAttributes(sourcepath,targetpath) Sub FolderAttributes(sourcepath,targetpath) Dim fso Set fso = CreateObject("Scripting.FileSystemObject") '将testing文件夹下所有扩展名名为.txt的文件,复制到123文件夹下 fso.CopyFile sourcepath,targetpath fso.MoveFile sourcepath,targetpath End Sub 备注:如果C:/123文件夹不存在,则脚本运行时提示“路径不存在” CreateTextFile及DeleteFile的使用 方法名:CreateTextFile(filename,overwrite,unicode) 说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件 。 方法名:DeleFile(filespec,force) 说明:删除指定的文件 。详细说明请见表7. 示例: Dim sourcepath sourcepath = "C:/testing/ myClass2.doc " Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso Set fso = CreateObject("Scripting.FileSystemObject") '在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件 fso.CreateTextFile sourcepath,true '删除testing文件夹下,所有扩展名为.txt的文件 fso.DeleteFile sourcepath,true End Sub 备注:如果所删除的文件为只读属性且DeleteFile()的参数为false的话,则脚本运行是出现“没有权限”FileExists的使用 方法名:FileExists(filespec) 说明:判断所指定的文件是否存在 。此方法将返回Bool值. 详细说明请见表7. 示例: Dim sourcepath sourcepath = "C:/testing/test.txt" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso Set fso = CreateObject("Scripting.FileSystemObject") '判断C:/testing/test.txt是否有存在,如果存在返回“true”;否则返回“false” If fso.FileExists(sourcepath) Then msgbox "true" else msgbox "false" End If End Sub GetBaseName、GetFileName及GetExtensionName的使用 方法名:GetBaseName(filespec) 说明:返回字符串,文件 (不带扩展名), 或者提供的路径说明中的文件夹 。 方法名:GetExtensionName(filespec) 说明:返回字符串,该字符串包含路径最后一个组成部分的扩展名 。 方法名:GetFileName(pathspec) 说明:返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹 。 示例: Dim sourcepath sourcepath = "C:/testing/test.txt" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso Set fso = CreateObject("Scripting.FileSystemObject") '返回文件名test, 扩展名 txt, 文件名+扩展名 test.txt Msgbox (fso.GetBaseName(sourcepath)) Msgbox (fso. GetExtensionName(sourcepath)) Msgbox (fso.GetFileName(sourcepath)) End Sub GetFile的使用 方法名:GetFile(filespec) 说明:返回与指定路径中某文件相应的 File 对象,既而可以访问到File的属性 。 示例: Dim sourcepath sourcepath = "C:/testing/778899.txt" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objFile Set fso = CreateObject("Scripting.FileSystemObject") '调用GetFile()返回File对象,通过File对象来访问其下的属性 set objFile = fso.GetFile(sourcepath) reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name End Sub 注:关于File对象的属性,将在下面会详细介绍 GetTempName的使用 方法名:GetTempName() 说明:返回随机生成的临时文件或文件夹的名称,用于执行要求临时文件或文件夹的操作 示例: Dim fso, tempfile '创建FileSystemObject对象 Set fso = CreateObject("Scripting.FileSystemObject") '调用CreateTempFile函数,并将对象赋值给tempfile Set tempfile = CreateTempFile '在临时文件中写入字符 tempfile.WriteLine "世界你好" '关闭对象 tempfile.Close Function CreateTempFile Dim tfolder, tname, tfile Const TemporaryFolder = 2 'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹 Set tfolder = fso.GetSpecialFolder(TemporaryFolder) '随机生成一个临时文件名 tname = fso.GetTempName '在Temp临时文件夹下面,创建一个临时文件 Set tfile = tfolder.CreateTextFile(tname) '将结果赋值给函数 Set CreateTempFile = tfile End Function 备注:GetTempName 方法不创建文件,该方法仅提供临时文件名 。示例中的的结果,默认保存在C:/Documents and Settings/Administrator/Local Settings/Temp OpenTextFile的使用 方法名:(filename,iomode,create,format) 说明:打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件 。详细的说明见表7. 示例: Dim spec spec = "C:/testing.txt" '三个参数的分别为:以只读模式打开文件、以只写方式打开文件、打开文件并在文件末尾进行写操作 Const intForReading = 1,intForWriting = 2,intForAppending = 8 '调用OpenTextFileTest() Call OpenTextFileTest(spec,intForAppending) Sub OpenTextFileTest(sepc,intForAppending) Dim fso,objTStream '创建FileSystemObject对象 Set fso = CreateObject("Scripting.FileSystemObject") '参数true表示:如果文件不存在,则创建文件 。最后OpenTextFile()将返回TextStream对象 Set objTStream = fso.OpenTextFile(sepc,intForAppending,true) '利用TextStream对象来将字符串写入文件 objTStream.write "hello word!" '释放TextStream对象 objTStream.close End Sub File对象所提供的属性
我们在前面File对象的方法中曾提到,可以使用FileSystemObject对象的GetFile()来访问File对象属性 。 访问File对象属性的示例如下: Dim sourcepath sourcepath = "C:/testing/778899.txt" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objFile Set fso = CreateObject("Scripting.FileSystemObject") '调用GetFile()返回File对象,通过File对象来访问其下的属性 set objFile = fso.GetFile(sourcepath) reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name End Sub 备注:File对象属性的使用方法和前面介绍的Folder对象属性的使用方法一样,所以在这不一一列出 。 TextStream对象概述 TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对象时,我们仍要借助FileSystemObject 对象或其附属对象来创建一个 TextStream 对象并访问磁盘文件的内容 。可以通过FileSystemObject 对象的CreateTextFile()及OpenTextFile(),来获取TextStream的对象句柄 。 下面我们来具体的看看TextStream 对象的方法及属性的使用 。 一、TextStream对象的方法
Close、Write、WriteLine及WriteBlankLines的使用 方法名:Close() 说明:关闭正在打开的文件 方法名:WriteLine(string) 说明:向文件写入字符串 string(可选)和换行符 。 示例: Dim strPath,strText strPath = "C:/testing.txt" strText = "This is Test !" & vbCrLf & “hello word !” '调用函数 Call CreateFile(strPath,strText) Sub CreateFile(strPath,strText) Dim objFso,objStream '创建FileSystemObject对象 Set objFso = CreateObject("Scripting.FileSystemObject") '使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄 Set objStream = objFso.CreateTextFile(strPath,True) '三个Write的意思分别为:在文本中写入字符、写入带换行符的字符、写入3个换行符 objStream.Write(strText) ‘objStream.WriteLine(strText) ‘objStream. WriteBlankLines 3 '关闭TextStream对象 objStream.Close End Sub Read、ReadAll及ReadLine的使用 方法名:Read(numchars) 说明:从 TextStream 文件中读入指定数目的字符并返回结果字符串 。 方法名:ReadAll() 说明:读入全部 TextStream 文件并返回结果字符串 。 方法名:ReadLine() 说明:从 TextStream 文件中读入一整行字符(直到下一行,但不包括下一行字符),并返回结果字符串 。 示例: Sub CreateFile(strPath,strText) Dim objFso,objStream '创建FileSystemObject对象 Set objFso = CreateObject("Scripting.FileSystemObject") '使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄 Set objStream = objFso.CreateTextFile(strPath,True) '写入字符 objStream.WriteLine(strText) Set objStream = objFso.OpenTextFile(strPath,1,true) msgbox (objStream.ReadLine) 'msgbox (objStream.ReadAll) ' msgbox (objStream.Read(Len(strText))) '关闭TextStream对象 objStream.Close End Sub Skip、SkipLine的使用 方法名:Skip(numchars) 说明:读取 TextStream 文件时跳过指定数目的字符 方法名:SkipLine() 说明:当读到 TextStream 文件时,跳过下一行 。 示例: Dim strPath,strText strPath = "C:/testing.txt" '调用函数 Call CreateFile(strPath) Sub CreateFile(strPath) Dim objFso,objStream '创建FileSystemObject对象 Set objFso = CreateObject("Scripting.FileSystemObject") '使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄 Set objStream = objFso.CreateTextFile(strPath,True) '在文本中写入字符 objStream.Write "This is Test !" & vbCrLf & "hello word !" '以只读的方式打开文件 Set objStream = objFso.OpenTextFile(strPath,1,true) '读取文件时跳过5个字符;或者跳过当前行,读取下一行 objStream.Skip(5) 'objStream.SkipLine '读取文本内容 msgbox objStream.ReadAll '关闭TextStream对象 objStream.Close End Sub 备注:两者的区别是:Skip——跳过指定的几个字符;SkipLine——跳过一行 二、TextStream对象的属性 TextStream 的属性提供有关文件内文件指针当前位置的信息,如表9所示 。注意,所有的属性是只读的 。
AtEndOfLine 和 AtEndOfStream 属性仅对以 iomode 参数为 ForReading 的方式打开的文件可用,否则将会出错 。 AtEndOfLine及AtEndOfStream的使用 示例: Dim strPath,strText strPath = "C:/testing.txt" '调用函数 Call CreateFile(strPath) Sub CreateFile(strPath) Dim objFso,objStream,str '创建FileSystemObject对象 Set objFso = CreateObject("Scripting.FileSystemObject") '以只读的方式打开文件,如果文件不存在则创建它 Set objStream = objFso.OpenTextFile(strPath,1,true) '如果当前的指针不在行末,则读取文本内容 Do While objStream.AtEndOfLine <> true ‘Do While objStream.AtEndOfStream <> true str = str + objStream.Read(1) Loop msgbox str '关闭TextStream对象 objStream.Close End Sub 备注:两者间的区别是:AtEndOfLine——读取到当前文本行的末尾;AtEndOfStream——读取到整个文本的末尾 Column及Line的使用 示例: Sub TestTextStream(strPath) Dim objFso,objTStream,str Set objFso = CreateObject("Scripting.FileSystemObject") '以只读的方式打开文件 Set objTStream = objFso.OpenTextFile(strPath,1) '如果当前的指针不在整个文档的末尾,读取文本的所有内容 Do While objTStream.AtEndOfStream <> true objTStream.ReadAll str = str + "共有" & objTStream.Line & "行数据,光标最后所在列号为:" & objTStream.Column & vbCrLf Loop '打印信息 print str End Sub 以下是补充资料: FSO包含的常见对象有:
用FSO对象模型来编程,使用CreateObject方法来创建FileSystemObject对象,例如:
在这个示例中,Scripting 是类型库的名字,而 FileSystemObject 则是想要创建的对象的名字 。至此我们获取了fso对象,接下来就可以使用fso对象了 。如果要释放的话也很简单,例如:
FileSystemObject对象总共一个属性即Drives 描述:获得所有可用驱动器的集合 。 Set fso = CreateObject("Scripting.FileSystemObject") Set Drivers = fso.Drives For Each Driver in Drivers Msgbox Driver.DriveLetter '输出计算机上所有的磁盘盘符 Next 方法:(仅常用的方法) CreateFile 描述:创建一个空文件 示例:创建文件C:\test.txt Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用CreateTextFile创建文件,不覆盖存在的文件 Fso.CreateTextFile "C:\test.txt",False '覆盖存在的文件 Fso.CreateTextFile "C:\test.txt",True CreateFolder 描述:创建一个空的文件夹 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用MyFolder创建文件夹 Fso.CreateFolder("c:\test") DeleteFile 描述:删除一个文件 示例:删除文件: c:\test.txt Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用DeleteFile删除指定文件 Fso.DeleteFile("c:\test.txt") '强制删除只读的文件 Fso.DeleteFile "c:\test.txt",True DeleteFolder 描述:删除一个文件夹 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用DeleteFile删除指定文件 Fso.DeleteFolder("c:\test") '强制删除只读的文件 Fso.DeleteFolder "c:\test",True FileExists 描述:判断指定文件是否存在 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用FileExists判断指定文件是否存在 MsgBox Fso.FileExists("c:\test.txt") FolderExist 描述:判断指定文件夹是否存在 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用FolderExists判断指定文件夹是否存在 MsgBox Fso.FolderExists("c:\test") CopyFile 描述:将一个或多个文件从某位置复制到另一位置 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用CopyFile复制文件到另一个位置,False不覆盖已存在文件 Fso.CopyFile "c:\test.txt","D:\",False 'True覆盖已存在文件 Fso.CopyFile "c:\test.txt","D:\",True 示例:将 c:\下所有的txt文件复制到D:\下 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用*.txt,可以同时将多个文件复制到另一个位置,False不覆盖已存在文件 Fso.CopyFile "c:\*.txt","D:\",False 'True表示覆盖已存在文件 Fso.CopyFile "c:\*.txt","D:\",True CopyFolder 描述:将文件夹从某位置复制到另一位置 语法:object. CopyFolder "source", "destination"[, overwrite] 参数:source必选项 。表示指定文件夹的路径 。组成部分中可用通配符 。 示例:将 c:\test文件夹复制到D:\下 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用CopyFile复制文件到另一个位置,默认为True覆盖已存在文件 Fso.CopyFolder "c:\test","D:\" 'False不覆盖已存在文件 Fso.CopyFolder "c:\test","D:\",False MoveFile 描述:将一个或多个文件从某位置移动到另一位置 Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用MoveFile移动文件到另一个位置 Fso.MoveFile "c:\test.txt","D:\" MoveFolder 描述:将一个或多个文件夹从某位置移动到另一位置 示例: Dim Fso '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用MoveFolder移动文件夹到另一个位置 Fso.MoveFolder "c:\test","D:\" GetExtensionName 描述:获取文件后缀名 Dim Fso Dim GetExtensionName '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用GetExtensionName获取文件后缀名 GetExtensionName = fso.GetExtensionName("c:\test.txt") MsgBox GetExtensionName '输出txt GetBaseName 描述:获取文件当前所在文件夹 Dim Fso Dim GetBaseName '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用GetBaseName获取文件的文件名称 GetBaseName = Fso.GetBaseName("c:\test\test.txt") MsgBox GetBaseName '输出test GetParentFolderName 描述:将一个或多个文件夹从某位置移动到另一位置 Dim Fso Dim GetParentFolderName '创建FileSystemObject对象 Set Fso = CreateObject("Scripting.FileSystemObject") '使用GetParentFolderName获取文件当前所在的文件夹 GetParentFolderName = Fso.GetParentFolderName("c:\test\test.txt") MsgBox GetParentFolderName '输出c:\test 好了这篇文章就介绍到这了,看完这篇文章基本上对FileSystemObject就比较了解了 。 您可能感兴趣的文章:
|