windows还给我们提供了一个叫做FileSystemObject(简称FSO)对象。FSO对象模型中包括了计算机文件系统所有的对象。见下表。利用这些对象可以更方便的操作文件系统。

对象
功能
Drive 允许收集系统的驱动器信息,诸如驱动器的可用空间
Folder 允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等等
Files 允许创建、删除或移动文件,并向系统查询文件的名称、路径等等
FileSysterObject 此为主要对象,提供一整套用于创建、删除、搜集相关信息,以及通常的操作驱动器,文件夹,和文件的方法。
TextStream 允许读写文本文件

下面我们一起来看看怎样用FSO对象来显示、新建、修改以及删除目录。

FSO对象模型包含在Scripting的类型库中,此类型库存在于Scrrun.dll文件中.使用FSO对象模型,首先要建立一个FileSystemObject对象。有两种方法可以实现。一种是从”工程”菜单中的”引用”对话框选择”Microsoft Scripting Runtime”项,然后在代码窗口中声明一个FileSystemObject类型的变量.语句如下:

Dim fso As New FileSystemObject

另一种方法是在代码中使用CreatObject方法动态的创建一个FileSystemObject对象.语句如下:

Dim fso As Object ‘ 声明对象变量
Set fso = CreatObject(“Scripting. FileSystemObject”) ‘创建FSO对象

我们具体看看FileSystemObject的主要属性.

1、驱动器

(1) Drives属性是FileSystemObject对象的唯一属性,它返回Drives集合中所有可用驱动器的只读集合。对于可删除的驱动器,不需要将媒体插入其中,就可以在Drives集合中显示出来。下面是它的主要属性有两个:一个是Count,另一个是Item.Count属性返回Drives集合或Dictionary对象中的条目数.Item属性用来返回或设置Drives集合或Dictionary对象中与指定关键字相关的项目.

下面代码说明了如何获得Drives集合,以及如何用For Eacn……Next语句来访问该集合中的每个Drive:

Sub ShowDriveList()

Dim fs As Object, d, dc, s,n
 创建文件系统对象
 Set fs = CreatObject(“Scripting. FileSystemObject”)
 创建驱动器集合
 Set dc= fs.Drives
 '取的驱动器对象
 For Each d in dc
  s = s & d.DriveLetter & “-” ‘格式化文本
  If d.DriverType = Remote Then ‘如果是Remote类型的驱动器
   n = d.ShareName ‘取得它的共享名
  Else
   n = d.volumeName ‘否则取得它的卷标
  End if
  s= s& n & vbCrLf ‘格式化文本
 Next
 MsgBox s ‘显示文本
End sub

(2) 当然我们也可以用Drive对象.Drive对象提供了对磁盘驱动器或网络共享属性的访问方法.下面是它的主要属性及其解释:

Availablespace 驱动器已用空间 DriveLetter 驱动器指定的字母
Freespace 驱动器剩余空间 DriverType 驱动器类型
TotalSize 驱动器全部空间 FileSystem 驱动器文件系统
IsReady 驱动器是否已准备 Path 驱动器根目录
SerizlNumber 驱动器序列号 VolumeName 驱动器卷标
ShareName 驱动器共享名

主要的方法就是GetDrive,此方法用来访问一个已有的驱动器,该方法返回一个与指定路径中的驱动器相对应的Drive对象。下面的代码中,我们将说明怎样取得一个指定的驱动器的相关信息:

Sub ShowFreeSpace(drvPath) ‘显示指定目录下的驱动器的信息
 Dim fs As Object, d, s
 Set fs = CreateObject(“Scripting.FileSystemObject”) ‘创建文件系统对象
 Set d = fs.GetDrive(fs.GetDriveName(drvPath)) ‘创建并得到指定取目录下的驱动器
 s = “Drive” & UCase(drvPath) & “-” ‘格式化文本
 s = s & d.VolumeName & vbCrLf ‘得到驱动器的卷标
 s = s & “FreeSpace:” & FormatNumber(d.FreeSpace / 1024, 0)
 '计算驱动器的剩余磁盘空间
 s = s & “Kbytes”
 MsgBox s ‘显示
End Sub

下面是filesystemobject的其他方法

CreateFolder 该方法的作用是创建一个文件夹。所要创建的文件夹必须是不存在的,否则出错。
CreateTextFile 该方法的作用是产生一个指定的文件名,并返回一个TextStream对象,该对象可被用于对指定的文件进行读写。如果overwrite参数为False或未指定,对于一个已存在的文件,将产生错误。
DeleteFile 该方法的作用是删除一个指定的文件。如果指定的文件不存在,则出错。
DeleteFolder 该方法的作用是删除一个文件夹及其内容。如果没有发现匹配的文件夹则出错。该方法不能确定文件夹中是否包含内容。
DriveExists 该方法的作用是用来确定驱动器是否存在。如果指定的驱动器存在,则返回True,否则返回False。但对于可删除介质的驱动器,即使没有介质存在,DriveExists方法也返回True,因此最好使用IsReady属性确定驱动器是否准备就绪。
FileExists 该方法的作用是判断指定的文件对象是否存在于当前文件夹
FolderExists 该方法的作用是判断指定的文件夹对象是否存在于当前文件夹
GetDrive 该方法的作用是返回一个在指定路径中的与某个驱动器相对应的Drive对象。对于网络驱动器,将首先检查该共享是否存在。
GerDriveName 该方法的作用是返回包括某一指定路径上的驱动器名的字符串。如果驱动器不能确定,则返回一个0长度字符串。该方法只对指定的路径起作用,它并不试图解析路径,也不检查指定路径是否存在。
GetExtensionName 该方法的作用是返回指定路径中最后一个组成部分的扩展名。
GetFile 该方法的作用是返回指定路径中与某一文件相关的File对象。一定要保证所指定的文件是实际存在的。否则将产生错误。
GetFileName 该方法的作用是返回指定路径的最后一个组成部分的文件名。
GetFolder 该方法的作用是返回指定路径上的与某个文件夹相关的Folder对象.要保证指定的文件夹是实际存在的,否则会出错. 使用Folder对象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder对象
GetParentFolderName 该方法的作用是返回一个包含指定路径上的最后一个组成部分的父文件夹的名称。
MoveFile 该方法的作用是将一个或多个文件从一个地方移动到另一个地方。
MoveFolder 该方法的作用是移动一个或多个文件夹,如果源路径包含通配符,或目的路径以斜杠(/)为结束,则表明目的路径为已存在的路径,在此文件夹中移动相匹配的文件夹.否则,认为目的路径是一个要创建的目标文件夹的名字.如果目的路径为一个已存在的文件或目的路径为一个目录,则出错.如果没有任何文件与源路径中的通配符相匹配也出错.
OpenTextFile 该方法可用来打开一个指定的文件,并返回一个TextStream对象。用于读文件或追加文件。

2、文件夹

对文件夹的操作,我们可以使用folder对象,它提供了对文件夹所有属性和方法的访问.下表市对其主要属性的解释:

DateCreated 返回指定文件或文件夹的创建日期和时间
DateLastAccessed 返回最后一次访问指定文件或文件夹的日期和时间
Drive 返回指定文件或文件夹所在的驱动器符号
Files 返回由File对象组成的所有Files集合,这些Files集合包含在指定的文件夹中,包括设置了隐藏和系统文件属性的那些文件夹
IsRootFolder 如果指定的文件夹是根文件夹,则返回True,否则返回False
Name 设置或返回指定文件或文件夹的名称
ParentFolder 返回指定文件或文件夹的父文件夹的Folder对象
Path 返回指定文件、文件夹或驱动器的路径
ShortName 返回较早的需要8.3文件命名约定的程序所使用的短文件名
ShortPath 返回较早的需要8.3文件命名约定的程序所使用的短路径
Size 对文件来说,本属性返回以字节为单位的文件大小;对文件夹来说,返回以字节为单位包括其中所有文件或子文件夹的大小
SubFolders 返回包含所有文件夹的一个Folders集合,这些文件夹包含在某个特定文件夹中, 包括设置了隐藏和系统文件属性的那些文件夹
Type 返回指定文件或文件夹的类型信息.

使用Folder对象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder对象, 该方法的作用是返回指定路径上的与某个文件夹相关的Folder对象.要保证指定的文件夹是实际存在的,否则会出错.

让我们来看一看其中的各种属性及其用法吧.

(1)Attributes属性可以返回文件或文件夹的属性,或者设置他们的新属性.所设属性可以是以下值中任意一个或多个的逻辑组合.

常数 值 说明
Normal 0 为一般文件,不设置属性
ReadOnly 1 为只读文件,属性为读/写
Hidden 2 为隐藏文件,属性为读/写
System 4 为系统文件,属性为读/写
Volume 8 为磁盘驱动器卷标,属性为只读
Directory 16 为文件夹或目录,属性为只读
Archive 32 在上次备份后已经改变的文件,属性为读/写
Alias 64 为链接或快捷方式,属性为只读
Compressed 128 为压缩文件,属性为只读

(2)DateCreated属性返回指定文件或文件夹的创建日期和时间,本属性为只读属性.

下面是用法:

Sub ShowFolderList( folderspec ) ‘folderspec 为文件夹名称
 Dim fs , f, f1,fc , s
 Set fs = CreateObject(“Scripting.FileSystemObject”)
 Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 Set fc = f.SubFolders ‘得到folder对象所包含的文件夹的folder集合
 For Each fi in fc ‘访问folder集合中的每一个folder
  s= s & f1.name ‘格式化要显示的文本
  s= s & vbCrLf
 Next
 MsgBox s ‘用对话框显示信息
End Sub

(3)DateLastModified属性用来返回最后一次修改指定文件或文件夹的日期和时间,本属性为只读.

下面代码用一个文件举例说明了DataLastModified属性的用法:

Sub ShowFileAccessInfo(filespec)
 Dim fs,f,s
 Set fs = CreateObject(“Scripting.FileSystemObject”)
 Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 s= Ucase(filespec) & vbCrLf
 s= s& “Created:” & f.DateCreate & vbCrLf
 s= s & “Last Accessed :” & f.DateLastAccessed & vbCrLf
 s= s & “Last Modifide :” & f.DateLastModified
 MsgBox s, 0,”File Access Info”
End Sub

(4)Type属性返回关于某个文件或文件夹类型的信息.例如对于以.TXT结尾的文本文件来说,本属性会返回”Text Document”.下面的代码举例说明了返回某个文件夹类型的Type属性的用法.在这个示例中,试图将Recycle Bin的路径或其他唯一的文件夹提供给过程.

Sub ShowFileSize( filespec )
 Dim fs,f,s
 Set fs = CreateObject(“Scripting.FileSystemObject”)
 Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 S = Ucase(f.Name) & “is a ” & f.Type ‘格式化文本
 MsgBox s,o, “File Size Info ” ‘显示信息
End Sub

主要方法有:

(1)Copy方法:

该方法的作用是拷贝一个指定的文件或文件夹到指定的目录.该方法和FileSystemObject.CopyFile方法的作用相同

(2)CreateTextFile方法:

该方法的作用是产生一个指定的文件名,并返回一个TextStream对象,该对象可被用于对指定的文件进行读写.如果overwrite参数为False或未指定,对于一个已存在的文件,将产生错误.

(3)Delete方法:

该方法的作用是删除一个指定的文件或文件夹.如果指定的文件或文件夹不存在,则发生一个错误.对于一个File或Folder来说,Delete方法的运行的结果和执行FileSystemObject.DeleteFile或FileSystemObject.DeleteFolder的结果是一样的.Delete方法执行时与指定的文件夹中时候有内容无关.

(4)Move

该方法用来将一个指定的文件夹或文件从一个地方移动到另一个地方,如果只是想移动一个文件或文件夹,则使用Move方法和使用FileSystemObject.MoveFile或FileSystemObject.MoveFolder操作的结果是一样的,但是如果要同时移动多个文件或文件夹,则只能使用后者。

讲了这么多,还是让我们来看一下具体的实现方法:

1、 创建一个文件夹

可以使用FileSystemObject对象的CreateFolder方法来实现,但要创建的文件夹必须不存在,否则出错。特别注意,FileSystemObject对象不能创建或删除驱动器。

下面的例子可以在应用程序所在目录下创建一个文件夹

Sub CreateFolder(folderspec)
 Dim fs
 Set fs = CreatObject(“Scripting.FileSystemObject”)
 fs.CreaterFolder(folderspec )
End sub

2、 删除一个或多个文件夹

可以使用FileSystemObject对象的Deletfolder方法,或者folder对象的Delete方法

Sub DeleteFolder(folderspec)
 Dim fs
 Set fs = CreatObject(“Scripting.FileSystemObject”)
 fs.DeleteFolder(folderspec & “100”)
 ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 ‘f.Delete
End sub

3、移动一个或多个文件夹

可以使用FileSystemObject对象的Movefolder方法,或者folder对象的Move方法

Sub MoveFolder(folderspec)
 Dim fs
 Set fs = CreatObject(“Scripting.FileSystemObject”)
 fs.MoveFolder(folderspec , “c:/windows/”)
 ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 ‘f.Move(“c:/windows/”)
End sub

4、一个或多个文件夹

可以使用FileSystemObject对象的Copyfolder方法,或者folder对象的Copy方法。

Sub CopyFolder(folderspec)
 Dim fs
 Set fs = CreatObject(“Scripting.FileSystemObject”)
 fs.CopyFolder(folderspec , “c:/windows/”)
 ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
 ‘f.Copy(“c:/windows/”)
End sub

利用VB操作目录和文件夹相关推荐

  1. VB 详细枚举指定目录、文件夹文件列表

    VB 详细枚举指定目录.文件夹文件列表: Public Function TheFileAttr(P As String) As String '读取指定文件/文件夹属性     On Error G ...

  2. vba ado返回集合_利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总

    大家好,今天继续讲解<VBA数据库解决方案>,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总.最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCE ...

  3. 利用shell监控云服务器文件夹变化

    利用shell监控云服务器文件夹变化 简介 这个代码的主要功能是对一台linux服务器(我使用的为centos7版本)的某个文件夹进行监控,当这个文件夹发生变化时(比如有对文件的增,删,改操作),那么 ...

  4. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小

    python 实现统计ftp服务器指定目录下文件夹数目.文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类 ...

  5. (win10家庭版)修改C盘Users目录下文件夹名称

    第一次发博客,写的不好请多多包涵~ 由于本人C:\Users目录下文件夹名称为中文,导致许多软件在安装运行上出现问题,哎~ 1.开启管理员账户 win键+r 输入 cmd 打开黑窗口输入: net u ...

  6. 服务器文件夹大小查看器,asp利用FSO检测服务器空间文件夹大小

    asp利用FSO检测服务器空间文件夹大小 * {margin:0;padding:0;font-size:12px;} body {padding:15px;} .size1 {font-weight ...

  7. 记我的一次脑残行为-(win10家庭版)修改C盘Users目录下文件夹名

    (win10家庭版)修改C盘Users目录下文件夹名 第一次发博客,写的不好,多多包涵,主要是记录我的脑残行为,引以为戒,下次绝对不在使用中文 注册. 新电脑注册时,使用 汉字 作为用用户名,而win ...

  8. win10(家庭版)怎么修改“c:\users”目录下文件夹名称

    ​1.开启管理员账户 win键+r 输入 cmd 打开黑窗口输入: net user administrator /active:yes (开启管理员账户)​ ​ 如果出现"发生系统错误5 ...

  9. 【FFmpeg】FFmpeg中操作目录、文件的接口

    1.简述 在学习FFmpeg源码中的例子时,发现FFmpeg封装了操作目录和文件的接口.这篇博客把这些接口罗列出来,作为笔记简单记录下. 2.接口列表 打开目录,准备读取目录信息 int avio_o ...

  10. .classpath文件有什么用_干货分享:Windows目录结构剖析,C盘目录常见文件夹都有什么用?...

    我们天天和文件夹打交道,但是有好多的碍眼的文件夹我们能不能删除呢,来看看今天的文章. 先问一个问题,你对你电脑的文件系统了解多少? 很多人只管用,但是有些时候,想要自己清理一下文件的时候,不太敢删除, ...

最新文章

  1. c盘扩展卷是灰色的_银行电脑win7-C盘满了怎么办
  2. eclipse编译hadoop插件
  3. Linux操作系统9则经典应用技巧
  4. 大数据_Hbase-原理说明_大数据存储_垂直拆表_水平拆表_动态列扩展---Hbase工作笔记0003
  5. atitit.ntfs ext 文件系统新特性对比
  6. linux模拟http请求命令
  7. Arduino的软件:Arduino IDE和Mind+图形化编程
  8. matlab仿真数字电路,基于matlab的数字逻辑电路仿真
  9. Lua包管理工具Luarocks
  10. c语言硬币个数最小值,c语言 PTA day4 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?...
  11. JAVA 创建文件和文件夹,删除文件和文件夹的实用工具(转载自-张长胜)
  12. SQL 登录注入脚本_vBulletin再修复高危RCE和SQL注入漏洞
  13. 关于快速记忆的原理和方法介绍
  14. 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗_畅言网普通话很严格...
  15. centos7 安装 nextcloud 教程
  16. 讨论——如何避免在直通车中高展现底点击的现象
  17. OpenCV 4.2.0 + opencv_contrib安装 (ubuntu16.04)
  18. 01-ESP8266 NodeMCU 物联网开发初识
  19. C++开发工程师基础面试题
  20. matlab wavelet cwt,Matlab下小波分析wavelet常用命令

热门文章

  1. 背景学习模型 —》codebook算法
  2. 【3dmax千千问】初学3dmax插件神器第22课:3dmax效果图渲染进阶教程|VRAY相机为何要与VRAY灯光、VRAY材质、VRAY贴图等进行匹配呢?食住玩3dmax千千问教程
  3. win10录屏_关于使用Win10自带录屏工具小技巧
  4. adb小技巧之实现近似vim编辑器功能编辑android系统内部的文本文件
  5. JEOL:推出新型电子探针显微分析仪JXA-iHP200F和JXA-iSP100
  6. 表面缺陷检测:机器视觉检测技术
  7. 延边大学计算机考研压分吗,这6所大学被严重低估,2020届高三考生注意收藏!适合“捡漏”...
  8. ArGIS Engine专题(8)之利用GP监督分类最大似然法实现根据矢量样本和影像提取植被类型
  9. servlet生成验证码和点击刷新验证码
  10. 如何避免IE浏览器自动升级到版本11