回 帖 发 新 帖 刷新版面

主题:[讨论]求教各位大侠:怎样实现“搜索到一个文件,然后删掉它”的功能

求教:
     怎样在vb中实现这样的功能:
          [color=FF00FF]搜索到一个文件,然后删掉它。[/color]

回复列表 (共6个回复)

沙发

先在你指定的文件夹中搜索,然后用删除语句删除你指定的文件

板凳

除了可以用Dir语句来进行搜索外,还可用API函数,代码如下:


Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long


Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1

Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
  dwFileAttributes As Long
  ftCreationTime As FILETIME
  ftLastAccessTime As FILETIME
  ftLastWriteTime As FILETIME
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName As String * MAX_PATH
  cAlternate As String * 14
End Type

Private Sub Command_Find_Click()
Dim fd As WIN32_FIND_DATA
Dim hd As Long
ListBox1.Clear  'ListBox1用来保存查找结果
hd = FindFirstFile(App.Path & "\*.*", fd) '在指定路径开始查找
If hd = INVALID_HANDLE_VALUE Then Exit Sub
ListBox1.AddItem fd.cFileName
While FindNextFile(hd, fd)
  ListBox1.AddItem fd.cFileName
Wend
FindClose (hd) '关闭查找
End Sub

3 楼

谢谢楼上的兄弟了。两个方法都很好。但后面那个是不是复杂了点啊。我先试试用dir语句吧。看能不能实现我的功能。不行的话再找你请教了。我要的具体功能是这样的:
[color=FF0000]“每次运行vb程序后都会产生一个数据文件,但每次都不一样,而我要在每一次运行vb程序后,都保存一次数据文件,而且名字都不一样,或者说第一次运行时产生的文件名是“AAA”,那么第二次产生的文件名就相应的自动命名为“AAA(1)”,不知道这个功能能不能实现。当然在电脑中第一次运行时,得把已有的那个数据文件删掉或者是覆盖掉。”[/color]

4 楼

你说的这种情况可以不需要搜索。如果那个数据文件你要读入的话,文件名是现成的,直接删除即可;如果那个数据文件不需要读入的话,你可以在每次保存文件后,再将文件名后面的序数(例如1、2、....)存入注册表,要删除的时候,只要在文件名后加上从注册表取得的序数就行了,这比你每次都搜索可能要方便些

5 楼

谢谢。我再试试吧。呵呵

6 楼

非常感谢你的帮助!我已用dir语句解决了这个问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册