c++实现,搜索文件

longpeng030704 2008-12-16 07:25:54
如题:

程序目的:
输入"关键字" 对目标磁盘或文件夹进行搜索,结果 输出带有关键字的文件名.
...全文
262 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
funnybunny 2008-12-29
  • 打赏
  • 举报
回复
第一下反应过来也是用API,因为有现成的,不过我也对API不甚了解。不知道LZ是不是这个意思?
不过上次用FILE搜索的几个函数的时候遇到了点问题,就是在搜索成功后直接把文件的句柄传给了
READFILE或者WRITEFILE那样的函数进行文件操作,后来发现好像操作不成功诶...事后没再去调查了,
今天看到这儿又想起来了...不知道是不是和之前返回的句柄没设置打开MODE有关(原本打开文件不是都要设置那个么?
但是我要是用的搜索返回的貌似就缺省了)...
不知道大家遇到过这个问题没...

longpeng030704 2008-12-29
  • 打赏
  • 举报
回复
嗯 对API的内容
SearchLife 2008-12-16
  • 打赏
  • 举报
回复
mark
tangshuiling 2008-12-16
  • 打赏
  • 举报
回复
mark
bfhtian 2008-12-16
  • 打赏
  • 举报
回复
api看来也要学了
ypb362148418 2008-12-16
  • 打赏
  • 举报
回复
API函数中有的,直接就可以搜索,但是还没有学到,大家交流一下
yeshijianbi 2008-12-16
  • 打赏
  • 举报
回复

P_ghost 2008-12-16
  • 打赏
  • 举报
回复
题目不对,不应该用C++,其实LZ是问windows下吧。用的全是WIN32 API。
太乙 2008-12-16
  • 打赏
  • 举报
回复
WIN32_FIND_DATA FileData; 
HANDLE hSearch;
DWORD dwAttrs;
char szDirPath[] = "c:\\TEXTRO\\";
char szNewPath[MAX_PATH];
char szHome[MAX_PATH];

BOOL fFinished = FALSE;

// Create a new directory.

if (!CreateDirectory(szDirPath, NULL))
{
ErrorHandler("Couldn't create new directory.");
}

// Start searching for .TXT files in the current directory.

hSearch = FindFirstFile("*.txt", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
ErrorHandler("No .TXT files found.");
}

// Copy each .TXT file to the new directory
// and change it to read only, if not already.

while (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
ErrorHandler("Couldn't copy file.");
}

if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
MessageBox(hwnd, "No more .TXT files.",
"Search completed.", MB_OK);
fFinished = TRUE;
}
else
{
ErrorHandler("Couldn't find next file.");
}
}
}

// Close the search handle.

if (!FindClose(hSearch))
{
ErrorHandler("Couldn't close search handle.");
}
zhangjundriver 2008-12-16
  • 打赏
  • 举报
回复
FindFirstFile
FindNextFile

只能实现在指定的目录下面寻找文件撒
要在整个磁盘下面收索文件,还是有点麻烦哦
我也想知道?关注中。。。
太乙 2008-12-16
  • 打赏
  • 举报
回复
#define _WIN32_WINNT 0x0400

#include "windows.h"

int
main(int argc, char *argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;

printf ("Target file is %s.\n", argv[1]);

hFind = FindFirstFile(argv[1], &FindFileData);

if (hFind == INVALID_HANDLE_VALUE) {
printf ("Invalid File Handle. Get Last Error reports %d\n", GetLastError ());
} else {
printf ("The first file found is %s\n", FindFileData.cFileName);
FindClose(hFind);
}

return (0);
}
lzr4304061988012 2008-12-16
  • 打赏
  • 举报
回复
FindFirstFile
FindNextFile

64,682

社区成员

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

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