关于模糊查找 获取文件名

lijiawlm 2009-07-02 10:43:33
小弟最近遇到一个麻烦事, 就是关于模糊查找文件
具体需求如下 在一个固定的文件夹中 有一个文件 id=***.html
请问一下 我如何能获得操作这个***.html的文件句柄??

大家提个思路 发点示范代码就可以了 谢谢!!
...全文
481 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bizhu12 2011-06-22
  • 打赏
  • 举报
回复
可以先找到文件名,然后再进行比较,看是否含有要模糊查找的相关字符,如果有则就是要找的结果.....
baihacker 2009-07-02
  • 打赏
  • 举报
回复
要枚举文件的话,我1楼已经说了.
楼主又在11楼搞了一个枚举文件的代码?
lijiawlm 2009-07-02
  • 打赏
  • 举报
回复
似乎这个地方可以

#include <stdio.h>
#include <windows.h>

BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}

void FindInAll(::LPCTSTR lpszPath)
{TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, "*.*"); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;

do
{
//这个地方似乎可以用strfind(wfd.cFileName,"id=")来做!!!
if (wfd.cFileName[0] == '.') //
//
//
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
// 对文件进行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄

}
baihacker 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lijiawlm 的回复:]
引用 7 楼 baihacker 的回复:
引用 5 楼 lijiawlm 的回复:
不知道给一个CreateFile函数干嘛??

不是要文件句柄么



我是要获取操作这个文件的句柄... 哎 我语文似乎太差了哦 ...
比如说 c:\盘下面有一个id=12333332145.html的文件 我要获取这个文件 把他读出来
可能过了一会 这个文件名称变成了 id=22225554.html的文件 我还是要这个文件 把他读出来 且之前那个删掉了
[/Quote]
看CreateFile函数的参数有没有适合你需要的.
我粗略看了一下,貌似一打开,就阻止其它进程访问了.
最好是直接打开,然后把数据插到内存,然后关闭...
你一边读,其它的一边改...不安全...也不允许.
lijiawlm 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baihacker 的回复:]
引用 5 楼 lijiawlm 的回复:
不知道给一个CreateFile函数干嘛??

不是要文件句柄么
[/Quote]

我是要获取操作这个文件的句柄... 哎 我语文似乎太差了哦 ...
比如说 c:\盘下面有一个id=12333332145.html的文件 我要获取这个文件 把他读出来
可能过了一会 这个文件名称变成了 id=22225554.html的文件 我还是要这个文件 把他读出来 且之前那个删掉了
leo_liaogy 2009-07-02
  • 打赏
  • 举报
回复
HWND hfile = fopen("***.html","wt");
baihacker 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lijiawlm 的回复:]
不知道给一个CreateFile函数干嘛??
[/Quote]
不是要文件句柄么
Walf_ghoul 2009-07-02
  • 打赏
  • 举报
回复
不会,帮顶。。。
lijiawlm 2009-07-02
  • 打赏
  • 举报
回复
不知道给一个CreateFile函数干嘛??
baihacker 2009-07-02
  • 打赏
  • 举报
回复
CreateFile Function

Creates or opens a file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, or named pipe. The function returns a handle that can be used to access the object.

To perform this operation as a transacted operation, use the CreateFileTransacted function.


HANDLE WINAPI CreateFile(
__in LPCTSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in HANDLE hTemplateFile
);

其它的msdn之
lijiawlm 2009-07-02
  • 打赏
  • 举报
回复
好久不见飞雪了...谢谢 刚刚没有说清楚 是我知道文件的前缀 如何获得这个文件的句柄 该文件夹下该文件唯一
lijiawlm 2009-07-02
  • 打赏
  • 举报
回复
错了 是如何获得这个 id=***.html 的操作句柄
baihacker 2009-07-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090702/10/485ab4c7-3076-4d50-8d28-3e6ce28d97cb.html
先枚举所有文件.
然后把文件名弄出来解析.

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧