主题:[讨论]求教各位大侠:怎样实现“搜索到一个文件,然后删掉它”的功能
scoot
[专家分:30] 发布于 2008-05-01 23:25:00
求教:
怎样在vb中实现这样的功能:
[color=FF00FF]搜索到一个文件,然后删掉它。[/color]
回复列表 (共6个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-05-02 06:55:00
先在你指定的文件夹中搜索,然后用删除语句删除你指定的文件
板凳
一江秋水 [专家分:9680] 发布于 2008-05-02 07:18:00
除了可以用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 楼
scoot [专家分:30] 发布于 2008-05-02 19:45:00
谢谢楼上的兄弟了。两个方法都很好。但后面那个是不是复杂了点啊。我先试试用dir语句吧。看能不能实现我的功能。不行的话再找你请教了。我要的具体功能是这样的:
[color=FF0000]“每次运行vb程序后都会产生一个数据文件,但每次都不一样,而我要在每一次运行vb程序后,都保存一次数据文件,而且名字都不一样,或者说第一次运行时产生的文件名是“AAA”,那么第二次产生的文件名就相应的自动命名为“AAA(1)”,不知道这个功能能不能实现。当然在电脑中第一次运行时,得把已有的那个数据文件删掉或者是覆盖掉。”[/color]
4 楼
一江秋水 [专家分:9680] 发布于 2008-05-03 07:13:00
你说的这种情况可以不需要搜索。如果那个数据文件你要读入的话,文件名是现成的,直接删除即可;如果那个数据文件不需要读入的话,你可以在每次保存文件后,再将文件名后面的序数(例如1、2、....)存入注册表,要删除的时候,只要在文件名后加上从注册表取得的序数就行了,这比你每次都搜索可能要方便些
5 楼
scoot [专家分:30] 发布于 2008-05-03 12:55:00
谢谢。我再试试吧。呵呵
6 楼
scoot [专家分:30] 发布于 2008-05-07 18:53:00
非常感谢你的帮助!我已用dir语句解决了这个问题。
我来回复