一) 察看和显示目录下的文件和文件夹
对于这个实现,其实很简单。首先想到的就是VB中给我们提供的现成的控件。主要有这么两类:
一类是驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)三个控件组合而成的自定义对话框;
另一类是windows提供的标准对话框。
他们在工具箱中的位置和图标如下所示:
1、驱动器列表框是一个下拉式的列表框,他和一般下拉式的列表框的不同仅在于功能上的不同,它提供了一个驱动器的列表。当单击右边的箭头时,则弹出计算机中的所有驱动器的下拉列表。默认状态下,在驱动器列表中显示的是当前驱动器,我们可以输入或从下拉列表中选择有效的驱动器标示符。
下面是它的主要属性,事件和方法.
属性 | Drive | 本属性用于返回或设置运行时选择的驱动器.默认值为当前驱动器 改变Drive属性会触发Change事件. 示例: Drive1.Drive = “c:\” 设置C盘为当前驱动器. |
事件 | Change | 当选择一个新驱动器或通过代码改变了Drive属性时触发该事件 |
下面是示例代码:
Private Sub Drive1_Change() Dir1.Path = Drive1.Drive ‘当选择一个新驱动器时,将驱动器列表中选中的当前驱动器,赋给目录列表的路径. End Sub |
2、目录列表框
目录列表框用于显示当前驱动器的目录结构,目录列表框从最高层目录开始,显示当前驱动器的目录结构,并按层次关系缩进跟目录下的所有子目录。下面是它的主要属性,方法和事件:
属性 | Path | 本属性用于返回或设置运行时选择的路径,默认路径为当前路径.改变Dri属性会触发Change事件. 示例: Dri1.Path = Drive1.Drive 设置在驱动器列表框中选中的驱动器盘符为目录列表的当前路径. |
ListIndex | 本属性用来返回或设置控件中当前被选择的项目索引号.目录列表框中的每一个目录都可以通过ListIndex属性来标识.由Path属性所设置的当前目录的ListIndex属性值总是-1,而它上面的目录的ListIndex属性值为-2,再上面的为-3,以此类推;而它所包含的子目录恰恰相反,紧挨着的第一个子目录的ListIndex属性值为0,往下一次加一. | |
ListCount | 本属性返回当前目录下的所有子目录书.ListCount的值比最大的ListIndex的值大1. | |
事件 | Change | 当选择一个新目录或通过代码改变了Path属性时触发该事件 |
下面是示例代码:
Private Sub Dir1_Change() '将文件列表框的路径值,设置为目录列表框所选中的路径值 File1.Path = Dir1.Path End Sub |
对于这个实现,其实很简单。首先想到的就是VB中给我们提供的现成的控件。主要有这么两类:
一类是驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)三个控件组合而成的自定义对话框;
另一类是windows提供的标准对话框。
他们在工具箱中的位置和图标如下所示:

1、驱动器列表框是一个下拉式的列表框,他和一般下拉式的列表框的不同仅在于功能上的不同,它提供了一个驱动器的列表。当单击右边的箭头时,则弹出计算机中的所有驱动器的下拉列表。默认状态下,在驱动器列表中显示的是当前驱动器,我们可以输入或从下拉列表中选择有效的驱动器标示符。

下面是它的主要属性,事件和方法.
属性 | Drive | 本属性用于返回或设置运行时选择的驱动器.默认值为当前驱动器 改变Drive属性会触发Change事件. 示例: Drive1.Drive = “c:\” 设置C盘为当前驱动器. |
事件 | Change | 当选择一个新驱动器或通过代码改变了Drive属性时触发该事件 |
下面是示例代码:
Private Sub Drive1_Change() Dir1.Path = Drive1.Drive ‘当选择一个新驱动器时,将驱动器列表中选中的当前驱动器,赋给目录列表的路径. End Sub |
2、目录列表框
目录列表框用于显示当前驱动器的目录结构,目录列表框从最高层目录开始,显示当前驱动器的目录结构,并按层次关系缩进跟目录下的所有子目录。下面是它的主要属性,方法和事件:
属性 | Path | 本属性用于返回或设置运行时选择的路径,默认路径为当前路径.改变Dri属性会触发Change事件. 示例: Dri1.Path = Drive1.Drive 设置在驱动器列表框中选中的驱动器盘符为目录列表的当前路径. |
ListIndex | 本属性用来返回或设置控件中当前被选择的项目索引号.目录列表框中的每一个目录都可以通过ListIndex属性来标识.由Path属性所设置的当前目录的ListIndex属性值总是-1,而它上面的目录的ListIndex属性值为-2,再上面的为-3,以此类推;而它所包含的子目录恰恰相反,紧挨着的第一个子目录的ListIndex属性值为0,往下一次加一. | |
ListCount | 本属性返回当前目录下的所有子目录书.ListCount的值比最大的ListIndex的值大1. | |
事件 | Change | 当选择一个新目录或通过代码改变了Path属性时触发该事件 |
下面是示例代码:
Private Sub Dir1_Change() '将文件列表框的路径值,设置为目录列表框所选中的路径值 File1.Path = Dir1.Path End Sub |
以上控件除了通用对话框(CommonDialog)之外一般只能显示当前的目录结构,对于在磁盘上新建、修改、删除目录却基本无能为力。
我们先来看看通用对话框对文件夹的新建,修改和删除操作.
1、新建目录
我们只要在显示出来的通用对话框的空白位置,单击鼠标,选择“新建”即可在指定的路径下创建新的目录,或者点击通用对话框右上角的新建图表(如下图所示),也可以在指定的路径下创建新的目录

2、修改文件夹名称
可以在显示出来的通用对话框中,用鼠标右键点击选择所要修改的文件夹,再弹出的快捷菜单中,选择重命名,即可修改目录名称。如下图所示:

3、删除文件夹
同修改文件夹名称一样,我们只要选择删除即可。如上图所示。
而且这种方法比RmDir更简便,它还可以删除包含有文件和子文件夹的文件夹。
除了以上控件,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对象。用于读文件或追加文件。 |
评论