与文件和文件夹操作有关的对象叫做FSO,与文件读写有关的对象叫做TextStream
1、TextStream的常用方法:
object.ReadLine '读取一行内容
object.ReadAll '读取文件中所有内容
object.WriteLine '写一行内容
object.Write(文本内容) '写入指定的字符串
object.Close '关闭文件
以上是比较常用的
object.Read(个数) '读取指定个数的字符
object.SkipLine '跳过文件中一行
object.Skip(个数) '跳过指定个数的字符SkipLine 方法
注意:TextStream对文件只可以从上往下读取,指针无法任意定位,也无法往回走。
-------------------------------------------------------
2、FSO的常用方法:
fso.OpenTextFile(path,[mode,create,encoding]) '打开一个文本文件
mode--模式,缺省为只读方式打开
ForReading=1 以只读方式打开
ForWriting=2 以读写方式打开
ForAppending=8 以附加方式打开
create--不存在时是否创建缺省为否,即不创建文件
encoding--何种方式打开,缺省以ASCII方式
TristateUseDefault=-2 以系统默认方式打开
TristateTrue=-1 以Unicode方式打开
TristateFalse=0 以ASCII方式打开
fso.CreateTextFile(path,[overrwite,unicode]) '创建一个文本文件
overrwite--是否覆盖,缺省为是
unicode--是否以Unicode方式创建,缺省为false,即以ASCII方式创建
fso.FileExists(path) '判断文件是否存在,返回结果为真或假
fso.FolderExists(path) '判断文件夹是否存在,返回结果为真或假
fso.GetFile(path) '获得指定路径下文件的File对象
fso.GetFolder(path) '获得指定路径下目录的Folder对象
以上是非常常用的
fso.CreateTextFile(path) '创建一个文件
fso.CreateFolder(path) '创建一个文件夹
fso.MoveFile(src,dst) '移动文件,如果目标有同名文件则会有报错提示文件已存在,可以通过该方法给文件改名
fso.MoveFolder(src,dst) '用法同MoveFile
fso.CopyFile(src,dst,[overwrite]) '复制文件,其中overwrite表示文件存在时是否替换,默认为true
fso.CopyFolder '用法同CopyFile
fso.DeleteFile(path,[force]) '删除文件,其中force表示是否删除只读文件,默认为false
fso.DeleteFolder(path,[force]) '用法同DeleteFile
fso.GetAbsolutePathname(path) '得到文件的绝对路径
以上是较常用的
fso.GetParentFolderName(path) '得到文件的父目录
fso.GetFileName(path) '得到文件的文件名
fso.GetBaseName(path) '得到文件的不带扩展名的那个文件名
fso.GetExtensionName(path) '得到文件的扩展名
备注:上面参数中的path,有时指文件或文件夹名,有时指文件或文件夹所在的绝对路径,有时指文件或文件夹对象
-------------------------------------------------------
3、File/Folder对象的属性方法:
File属性:
object.Name '文件名称,该属性可读写
object.Size '文件大小,以字节计
object.Path '文件路径
object.Attributes '表示文件的属性,用各个二制位置位组合表示。1标识只读,2标识隐藏,4标识系统。该属性部分位可读写
object.DateCreated '文件创建时间,该属性只读
object.DateLastAccessed '最近访问时间,该属性只读
object.DateLastModified '最后修改时间,该属性只读
object.ParentFolder '父文件夹,该属性只读
File方法:
object.Copy(dst,[overwrite]) '复制文件,overwrite表示目标文件存在时是否覆盖,默认为true
object.Move(dst) '移动文件,如果目标有同名文件则会有报错提示文件已存在
object.Delete([force]) '删除文件,force表示是否删除只读文件,默认为false
Folder与File对象的属性和方法基本一样,以下是多出的内容
object.Count '目录下的项目数,该属性只读
object.Files '得到目录下的所有文件对象集合
object.SubFolders '得到目录下的所有文件夹对象集合
-------------------------------------------------------
4、常见用法示例:
读取一个文本文件中所有内容:
Set fso = CreateObject("Scripting.FileSystemObject") '创建FSO对象
If fso.FileExists("test.txt") Then '判断文件是否存在
Set file = fso.OpenTextFile("test.txt") '打开文件
Else
MsgBox "文件不存在"
Wscript.Quit '退出程序
End If
If Not file.AtEndOfStream Then content = file.readall() '在读数据之前要判断一下文件是否到末尾,否则打开空文件时会有错.也可以用atendofstream作为循环的结束条件
file.close '关闭文件,否则文件会一直被占用
Set file = Nothing
Set fso = Nothing
递归删除指定目录下的所有最后修改时间早于指定天数指定后缀的文件:
dirPath = "D:\123"
suffix = "txt" '文件后缀
olderThan = 3 '早于该天数的文件
Set fso = CreateObject("Scripting.FileSystemObject")
Set dirObj = fso.GetFolder(dirPath)
deleteFile dirObj,olderthan,suffix
Function deleteFile(dirObj,olderthan,suffix)
If dirObj.subfolders.count = 0 Then
Exit Function
Else
For Each folder In dirObj.SubFolders
deleteFile folder,olderthan,suffix
Next
For Each file In dirObj.Files
If( LCase(fso.GetExtensionName(file))=LCase(suffix) And DateDiff("d",file.DateLastModified,Date)>olderThan ) Then file.Delete
Next
End If
End Function