" id="b1img" alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO">
  • " alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" />
  • " alt="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" title="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" />
  • " alt="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" title="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" />

VB – 文件系统操作

程序设计2005-06-07 itlogger阅读(374) 评论(0)

    如何将文件丢到“回收站”
  VB 本身的文件操作语句 Kill,是把文件直接删除,而不是移到回收站中,那么这要如何做呢?
  API 函数:SHFileOperation
  Private Declare Function SHFileOperation Lib ″shell32.dll″ Alias ″SHFileOperationA″(lpFileOp As SHFILEOPSTRUCT) As Long
  ′参数 IPFileOp:传入ShfileoPstruct数据结构的变量,其结构如下 :
  Type SHFILEOPSTRUCT
  hWnd As Long ′调用过的窗口代码,不填也无所谓
  wFunc As Long
  ′指定成“复制、删除、移动、更名”等功能
  pFrom As Strin0g ′来源目录文件
  pTo As String ′目的目录或文件
  fFlags As Integer ′操作文件的标志
  fAborted As Boolean ′是否允许使用都中断
  hNameMaps As Long ′不必填写
  sProgress As String ′进程字符串,通常不填写
  End Type
  在 SHFILEOPSTRUCT 数据结构中,大部分的栏是不必填写的,下面我就针对需要填写的栏说明一下:
  wFunc:指定成“复制、删除、移动、更名”等功能的设置值
  pFrom:来源目录或文件,设置时,要在文件名称后面补上Chr(0)。
  pTo:目的目录或文件。
  fFlags:操作文件的标志,可以是以下设置值的组合。
  fAborted:允许使用时中途中断,也就是在进度对话框中,会显示[取消]按钮。
  例子:
  1、把 “c:1.txt” 丢到回收站。
  Dim SHFileOp As SHFILEOPSTRUCT
  SHFileOp.wFunc = FO-delete ′删除
  SHFileOp.pFrom = ″c:1.txt″ + Chr(0)
  ′来源目录或文件
  SHFileOp.fFlags = FOF_ALLOWUNDO + FOF-NOCONFIRMATION ′丢到回收站+不预先征询使用者是否删除文件。
  SHFileOperation SHFileOp ′执行
  2、把“c:*.txt”丢到回收站。
  SHFileOperation 也可以一次删除多个文件,方法有两种,一种是使用通配符(*或?),例如将 pFrom 栏设置 “c:*.txt”,另一种方法则是将想要删除的文件以 Chr(0) 为分隔字符,然后串在一起指定给 pFrom 栏,例如:
  Dim Files As String
  Files=″c:1.txt″+Chr(0)+ ″c:2.txt″+Chr(0)+ ″c:3.txt″+Chr(0)
  注意:其他的操作与例子1是一样的。
  补充:你也可以删除整个目录,只要 SHFileOp.pFrom = ″d: emp″就行了。
  
如何快速改变文件的所在目录

  当我们想改变某一个文件的所在目录,若使用 VB 所提供的功能,通常是先执行 FileCopy 将文件复制到另一个目录,然后才将原文件删除,例如:

  FileCopy Path1 & FileName,Path2 & FileName

  Kill Path1 & FileName

  这一方法对于比较大的文件(假设是200MB),十分浪费时间,若使用 SHFileOperation API 函数,则可以不必复制文件,而直接将文件移至另一个目录,方法如下(假设将 c:game.dbf 移至 c: ools 目录):

  Dim SHFileOp As SHFILEOPSTRUCT

  SHFileOp.wFunc = FO-MOVE ′移动

  SHFileOp.pFrom = ″c:game.dbf″+Chr(0)

  SHFileOp.pTO=″c: ools″ ′必须是一个已存在的目录

  SHFileOp.fFlags = FOF-ALLOWUNDO +FOF-NOCONFIRMMKDIR ′在复制文件时若需要建立目录,不预先征询使用者即直接建立

  SHFileOperation SHFileOp ′执行

  补充:文件可以移到另一个驱动器,但它的动作相当于复制文件之后再把原文件删除,惟有在同一磁盘中移动才具有快速移动的效果;如果想一次移动多个文件,则是将想要移动的文件以 Chr(0)为分隔字符,然后串在一起指定给 pFrom 栏。 …

转载请注明 :IT樵客
文章地址:http://www.itlogger.com/program/97.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注