[转] Vb中FSO 对象的介绍

在 VB 编程中经常需要和文件系统打交道,比如获取硬盘的剩余空间、判断文件夹或文件是否存在等。在VB 推出文件系统对象(File System Object)以前,完成这些功能需要调用 Windows API 函数或者使用一些比较复杂的过程来实现,使编程复杂、可靠性差又容易出错。使用 Windows 提供的的文件系统对象,一切变得简单多了。以下笔者举出一些编程中比较常用的例子,以函数或过程的形式提供给大家,读者可在编程中直接使用,也可以改进后实现更为强大的功能。
    要应用 FSO 对象,须要引用一个名为 Scripting 的类型库,方法是,执行 VB6.0 的菜单项“工程/引用”,添加引用列表框中的“Microsoft Scripting Runtime”一项。然后我们在“对象浏览器”中就可以看到 Scripting 类型库下的众多对象及其方法、属性。
  1、判断光驱的盘符:
Function GetCDROM() ' 返回光驱的盘符(字母)
    Dim Fso As New FileSystemObject '创建 FSO 对象的一个实例
    Dim FsoDrive As Drive, FsoDrives As Drives '定义驱动器、驱动器集合对象
    Set FsoDrives = Fso.Drives
    For Each FsoDrive In FsoDrives '遍历所有可用的驱动器
        If FsoDrive.DriveType = CDrom Then '如果驱动器的类型为 CDrom
            GetCDROM = FsoDrive.DriveLetter '输出其盘符
        Else
            GetCDROM = ""
        End If
    Next
    Set Fso = Nothing
    Set FsoDrive = Nothing
    Set FsoDrives = Nothing
End Function


  2、判断文件、文件夹是否存在:

'返回布尔值
'True 存在,False 不存在,filername 文件名
Function FileExist(filename As String)
    Dim Fso As New FileSystemObject
    If Fso.FileExists(filename) = True Then
        FileExist = True
    Else
        FileExist = False
    End If
    Set Fso = Nothing
End Function
'返回布尔值
'True 存在,False 不存在,foldername 文件夹
Function FolderExist(foldername As String)
    Dim Fso As New FileSystemObject
    If Fso.FolderExists(foldername) = True Then
        FolderExist = True
    Else
        FolderExist = False
    End If
    Set Fso = Nothing
   End Function

  3、获取驱动器参数:

'返回磁盘总空间大小(单位:M),Drive = 盘符 A ,C, D ...
Function AllSpace(Drive As String)
    Dim Fso As New FileSystemObject, Drv As Drive
    Set Drv = Fso.GetDrive(Drive) '得到 Drv 对象的实例
    If Drv.IsReady Then '如果该驱动器存在(软驱或光驱里有盘片,硬盘存取正常)
    AllSpace = Format$(Drv.TotalSize / (2 ^ 20), "0.00") '将字节转换为兆
Else
    AllSpace = 0
End If
Set Fso = Nothing
Set Drv = Nothing
End Function
'返回磁盘可用空间大小(单位:M),Drive = 盘符 A ,C, D ...
Function FreeSpace(Drive)
    Dim Fso As New FileSystemObject, Drv As Drive
    Set Drv = Fso.GetDrive(Drive)
    If Drv.IsReady Then
        FreeSpace = Format$(Drv.FreeSpace / (2 ^ 20), "0.00")
    End If
    Set Fso = Nothing
    Set Drv = Nothing
End Function
'获取驱动器文件系统类型,Drive = 盘符 A ,C, D ...
Function FsType(Drive As String)
    Dim Fso As New FileSystemObject, Drv As Drive
    Set Drv = Fso.GetDrive(Drive)
    If Drv.IsReady Then
        FsType = Drv.FileSystem
    Else
        FsType = ""
    End If
    Set Fso = Nothing
    Set Drv = Nothing
End Function

  4,获取系统文件夹路径:

'返回 Windows 文件夹路径
Function GetWindir()
    Dim Fso As New FileSystemObject
    GetWindir = Fso.GetSpecialFolder(WindowsFolder)
    Set Fso = Nothing
End Function
'返回 Windows\System 文件夹路径
Function GetWinSysdir()
    Dim Fso As New FileSystemObject
    GetWinSysdir = Fso.GetSpecialFolder(SystemFolder)
    Set Fso = Nothing
End Function

  5,综合运用:一个文件备份通用过程:
'Filename = 文件名,Drive = 驱动器,Folder = 文件夹(一层)
Sub BackupFile(Filename As String, Drive As String, Folder As String)
    Dim Fso As New FileSystemObject '创建 FSO 对象实例
    Dim Dest_path As String, Counter As Long
    Counter = 0
    Do While Counter < 6 '如果驱动器没准备好,继续检测。共检测 6 秒
        Counter = Counter + 1
        Call Waitfor(1) '间隔 1 秒
        If Fso.Drives(Drive).IsReady = True Then
            Exit Do
        End If
    Loop
    If Fso.Drives(Drive).IsReady = False Then '6 秒后目标盘仍未准备就绪,退出
        MsgBox " 目标驱动器 " & Drive & " 没有准备好! ", vbCritical
        Exit Sub
    End If
    If Fso.GetDrive(Drive).FreeSpace < Fso.GetFile(Filename).Size Then
        MsgBox "目标驱动器空间太小!", vbCritical '目标驱动器空间不够,退出
        Exit Sub
    End If
    If Right$(Drive, 1) <> ":" Then
        Drive = Drive & ":"
    End If
    If Left$(Folder, 1) <> "\" Then
        Folder = "\" & Folder
    End If
    If Right$(Folder, 1) <> "\" Then
        Folder = Folder & "\"
    End If
    Dest_path = Drive & Folder
    If Not Fso.FolderExists(Dest_path) Then '如果目标文件夹不存在,创建之
        Fso.CreateFolder Dest_path
    End If
    Fso.CopyFile Filename, Dest_path & Fso.GetFileName(Filename), True
    '拷贝,直接覆盖同名文件
    MsgBox " 文件备份完毕。", vbOKOnly
    Set Fso = Nothing
End Sub
Private Sub Waitfor(Delay As Single) '延时过程,Delay 单位约为 1 秒
    Dim StartTime As Single
    StartTime = Timer
    Do Until (Timer - StartTime) > Delay
    Loop
   End Sub

  

摘自:网络整理

相关参考

VBFSO的调用的两种方法

VB 中应用 FSO 对象模型介绍(摘自网络)

[] VbFSO 对象的介绍

[vb]FSO对象模型在VB中的应用

FSO对象新建、打开、保存文件

VB使用FileSystemObject对象写文件


VB相关

vbline的用法[]

画图工具的VB实现

VB 一个获得自己外网 IP 地址的程序代码

VB程序中实现IP地址子网掩码网关DNS的更改 []

VB 中应用 FSO 对象模型介绍(摘自网络)

[] VbFSO 对象的介绍

VB 画坐标轴

VB 二进制文件的操作

[VB]BMPJPGVBKeyCode常数用法

vb实时曲线的绘制和保存

VB操作EXCEL

vb初学回顾:最大公约数 最小公倍数 素数求取

vb 关于窗口样式的API以及处理文本的API参考

【引用】在VB6.0中实现弹出式菜单的几种方法

【引用】URLDownloadToFile_VB下载文件!

利用WinRar压缩和解压缩文件

VB 剪切板

VB实现指示窗口中拖动方框的程序

VB绘制走动的表针

如何用VB制作DLL文件

【引用】VB修改IP地址

VB多窗体退出代码

[]VB:如何检测到U盘的插拔(源代码)

巧用SendMessage函数扩展Treeview功能

vb中如何在任务管理器里面隐藏应用程序进程

如何实现VBEXCEL的无缝连接

一个API方式存取日志文件的模块[VB]

VB用记录集填充表格函数

VB打开文本文件各种方法

vb ClipBoard 剪切板应用(复制剪切粘贴)

【引用】窗口处理技巧大全 vb(窗体控件)

【转】 Md rd命令之VB

vb:读写文本文件

vb中实现真正锁定的带自定义菜单的文本控件

【引用】使用CommonDialogShowSave后如何判断是保存还是※取消?

vb 关于commondialog的多选VB获取Windows操作系统所有版本

vb UTF文本文件访问

VB编程中的Unicode vs Ansi

VBPiView4注册机

VB获取超过2G文件的大小

CopyMemory还要快的函数SuperCopyMemory

VB:编程效率快步提高之:十七种可用一行代码完成的技巧

VB画出来的五星红旗

Qt第一印象——QteQt


更多精彩>>>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值