2 qq 28254507 qq_28254507 于 2016.02.24 21:39 提问

求助!MFC FindFirstFile()的问题
 void TreeView::FindFirstFolder(CString strName, WIN32_FIND_DATAA& data)
{
    WIN32_FIND_DATAA s;
    FindFirstFile(strName, &s);
    AfxMessageBox(s.cFileName);
}

调用的语句如下:

  WIN32_FIND_DATAA  data ;  
    FindFirstFolder("H:\\2016寒假作业\\Test\\res\\默认文件夹\\默认笔记本\\*.*", data);

我想得到第一个文件的文件名,但是...
图片说明

弹出的消息盒子显示名称是"."
这是错哪了。。

2个回答

caozhy
caozhy   Ds   Rxr 2016.02.24 22:01
已采纳

你在命令行窗口打dir,也会看到目录项的前两个是
.
..

qq_28254507
qq_28254507 原来这样。谢谢了!
2 年多之前 回复
caozhy
caozhy 回复ProgJ: 这是从dos时代就有的约定,没什么为什么
2 年多之前 回复
caozhy
caozhy 回复ProgJ: 其实.和..也是两个目录项,一个指向当前目录,一个指向上一级目录。
2 年多之前 回复
qq_28254507
qq_28254507 为什么呢。。不是直接得到第一个文件夹啊。。?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.24 22:00

没错,第一个就是.
第二个是..
第三个开始才是真正的文件名
继续调用FindNextFile 2次。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
FindFirstFile FindNextFile FindClose使用
TCHAR szFind[MAX_PATH] = _T("\\CF Card"); TCHAR cFileName[MAX_PATH] = { 0 }; WIN32_FIND_DATA stFindFileData; wcscat(szFind, _T("\\*.*")); //这里一定要指明通配符,不然不会读取所有文件和目录 HANDLE hFind = FindFirs
FindFirstFile用法
void CFindFilesDlg::OnBnClickedButton1() {  // TODO: 在此添加控件通知处理程序代码  CString c1;  CString stredit;  CString strtemp;  HANDLE hFile;  WIN32_FIND_DATA fileinfo;  DWORD errorcode = 0;  m_Edit1.G
FindFirstFile、FindNextFile和FindClose
在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LOG数据定期删除掉。要实现这个功能就得遍历整个目录,把文件名称和文件创建的时间都超过6个月时间的文件删除掉。因此,就需使用到下面的API函数FindFirstFile和FindNextFile来实现这样
利用FindFirstFile和FindNextFile查找文件或遍历文件夹
FindFirstFile()根据文件名查找文件,函数执行成功返回一个搜索句柄,出错则返回INVALID_HANDLE_VALUE常数,查找结束应该用FindClose函数关闭搜索句柄。函数原型: HANDLE WINAPI FindFirstFile( _In_   LPCTSTR lpFileName, _Out_  LPWIN32_FIND_DATA lpFindFileDat
利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件
本文利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件,最基础的历遍所有文件。一下代码尚无法解决文件名为中文时的乱码问题,以及无法分别无后缀的文件名和文件夹名的区别。 FindFirstFile()用于获得指定目录的第一个文件。其原型为: lpFileName 用于指定搜索目录和文件类型,可以用通配符,初次使用需要注意 \ 需要用转义字符表达
C++使用通配符查找文件(FindFirstFile)
C++使用Windows通配符查找相应文件。
使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。函数的输入为要查找的根目录,输出为存放所有文件名称的缓冲算法:使用递归二、代码:void FindFileInDir(char* rootDir, char* strRet){    char fname[MAC_FILENAM
FindFirstFile 函数要注意多字节字符问题
本来想搞搞FindFirstFile 函数的,写个代码把
使用WinAPI函数FindFirstFile或GetFileAttributes判断文件是否存在
函数FindFirstFile根据文件名查找文件:如执行成功,返回一个搜索句柄;如果出错,返回一个INVALID_HANDLE_VALUE常数。返回的如果是句柄,应该用FindClose函数关闭。 HANDLE WINAPI FindFirstFile( __in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileDat
Windows API一日一练(58)FindFirstFile和FindNextFile函数
在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LOG数据定期删除掉。要实现这个功能就得遍历整个目录,把文件名称和文件创建的时间都超过6个月时间的文件删除掉。因此,就需使用到下面的API函数FindFirstFile和FindNextFile来实现这样