求个查找文件的源代码!

FortheC 2008-07-31 06:52:43
不要说网上多得是之类的话的,我已经充分利用了百度和Google,找不到合适的;

我需要这样一个函数,指定盘符,指定文件名(如: 01.txt - 在哪个目录下不确定),我要这个函数把这个盘中的第一个01.txt给我找出来;

有完整代码的Copy一下给我吧,谢过了。
...全文
214 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinglsm 2008-08-02
  • 打赏
  • 举报
回复
strFavDir为目录,lpfilename为要查的文件名,

BrowseFavDir(const CString &strFavDir, LPCSTR lpFilename)
{
CFileFind myFileFinder;
CString szFavDir=strFavDir;
CString strfilepath = "";
if(szFavDir.Right(1)!="\\")
{
szFavDir+="\\";
}
szFavDir+="*.*";

BOOL bFindRes=myFileFinder.FindFile(szFavDir);

int index = 0;
while(bFindRes)
{
bFindRes=myFileFinder.FindNextFile();
if(myFileFinder.IsDirectory() && (!myFileFinder.IsDots()))
{
//Is SubFolder
CString tem = myFileFinder.GetFilePath();
strfilepath = BrowseFavDir(tem,lpFilename);
if (strfilepath != "")
return strfilepath;
}
else if(!myFileFinder.IsDirectory() && !myFileFinder.IsDots())
{
//Is Files
if (myFileFinder.GetFileName() == lpFilename)
{
strfilepath = myFileFinder.GetFilePath();
break;
}
}

}
myFileFinder.Close();
return strfilepath;
}
hagangqiou 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tjianli 的回复:]
#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

void FindFile(string szPath)
{
WIN32_FIND_DATA wfd;
HANDLE hFind;
string sFullPath;
string sFindFilter;
DWORD dwAttributes = 0;

sFindFilter = szPath;
sFindFilter += "\\*.*";

if ((hFind = FindFirstFile(sFindFilter.c_str(), &wfd)) == INVALID_HANDLE_VALUE)
{
return;
}

do
{
if (strcmp(wfd.…
[/Quote]
这个不错,值得借鉴!
另外c++里面有findfile的函数,可以自己去学习下。
icy_heart 2008-08-01
  • 打赏
  • 举报
回复
FindFirstFile
FindNextFile
FortheC 2008-07-31
  • 打赏
  • 举报
回复
补充一下吧, 如,我要在C盘找一个名为01.txt的文件;

char *name1 = "C:\\";
char *name2 = "01.txt";
char *path = new char[0x0001F4];



void FindtheFile(char *name1, char *name2, char *path) // 我要这个功能,指定在C:\目录下查找01.txt的文件,
{ 找到后把01.txt的完整路径储存在'path'
.....;
}


前提当然是,并不知道01.txt在哪个目录,有可能是C:\abc\02.txt,C:\the\Threa\01.txt,......
iBug168 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 FortheC 的帖子:]

我需要这样一个函数,指定盘符,指定文件名(如: 01.txt - 在哪个目录下不确定),我要这个函数把这个盘中的第一个01.txt给我找出来;

//如何指定???说具体点.


[/Quote]

[Quote=引用 2 楼 tjianli 的回复:]
这不就是传说中的遍历文件...Google上应该有很多
但是你这个“第一个01.txt”改怎么理解?
[/Quote]
iBug168 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 FortheC 的帖子:]

我需要这样一个函数,指定盘符,指定文件名(如: 01.txt - 在哪个目录下不确定),我要这个函数把这个盘中的第一个01.txt给我找出来;

//如何指定???说具体点.


[/Quote]

[Quote=引用 2 楼 tjianli 的回复:]
这不就是传说中的遍历文件...Google上应该有很多
但是你这个“第一个01.txt”改怎么理解?
[/Quote]
koko2710 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tjianli 的回复:]
这不就是传说中的遍历文件...Google上应该有很多
但是你这个“第一个01.txt”改怎么理解?
[/Quote]
还有找出来做什么呢?
jay的Fans 2008-07-31
  • 打赏
  • 举报
回复
这不就是传说中的遍历文件...Google上应该有很多
但是你这个“第一个01.txt”改怎么理解?
xkyx_cn 2008-07-31
  • 打赏
  • 举报
回复
先mark
jay的Fans 2008-07-31
  • 打赏
  • 举报
回复
#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

void FindFile(string szPath)
{
WIN32_FIND_DATA wfd;
HANDLE hFind;
string sFullPath;
string sFindFilter;
DWORD dwAttributes = 0;

sFindFilter = szPath;
sFindFilter += "\\*.*";

if ((hFind = FindFirstFile(sFindFilter.c_str(), &wfd)) == INVALID_HANDLE_VALUE)
{
return;
}

do
{
if (strcmp(wfd.cFileName, ".") == 0 ||
strcmp(wfd.cFileName, "..") == 0)
{
continue;
}

sFullPath = szPath;
sFullPath += '\\';
sFullPath += wfd.cFileName;

if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
FindFile(sFullPath);
SetCurrentDirectory("..");
}
else
{
if(!strcmp("01.txt" , wfd.cFileName))
cout << wfd.cFileName << endl;
}
}
while (FindNextFile(hFind, &wfd));
FindClose(hFind);
}

int main(int argc, char* argv[])
{
FindFile("d:\\");
return 0;
}

65,206

社区成员

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

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