登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

[转] Vb中FSO 对象的介绍  

2012-05-24 07:34:00|  分类: 编程-VB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在 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


更多精彩>>>
  评论这张
 
阅读(1125)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018