在遍历过程中的找到的那个文件,为什么我对它进行操作的时候CreateFile打不开,
如果不用遍历则没有问题。 
我要修改一个目录下所有的文件的时间为当前时间。
{

WIN32_FIND_DATA   FileData;     
HANDLE   hSearch;     
DWORD   dwAttrs;     
char   szDirPath[]   =   "D:\\sample\\";     
char   szNewPath[MAX_PATH];     
char   szHome[MAX_PATH];     

BOOL   fFinished   =   FALSE;     
SYSTEMTIME sysTime;
GetLocalTime(&sysTime); //   Start   searching   for   .TXT   files   in   the   current   directory.     

hSearch   =   FindFirstFile("*.h",   &FileData);     
if   (hSearch   ==   INVALID_HANDLE_VALUE)     
{   
MessageBox (NULL,"11","FindFirstFile",MB_OK);

}     

//   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);     
{   
SYSTEMTIME new_stime;
FILETIME lpCreationTime;
FILETIME lpLastAccessTime;
FILETIME lpLastWriteTime;
HANDLE   hFile;   

hFile   =   CreateFile(   szNewPath,   GENERIC_READ   |   GENERIC_WRITE,   
FILE_SHARE_READ|   FILE_SHARE_WRITE,   
NULL,   
OPEN_EXISTING|FILE_FLAG_OVERLAPPED,   
FILE_ATTRIBUTE_NORMAL,   
NULL   );   

GetLocalTime(&new_stime);
SystemTimeToFileTime(&new_stime, &lpCreationTime);
BOOL bTest = SetFileTime(hFile, &lpCreationTime, &lpCreationTime,&lpCreationTime);
;

}     

if   (!FindNextFile(hSearch,   &FileData))     
{   
fFinished   =   TRUE;    

}   
}     

//   Close   the   search   handle.     

if   (!FindClose(hSearch))     
{     
MessageBox (NULL,"11","FindFirstFile",MB_OK);
}     

}

解决方案 »

  1.   

    当前目录是D:\\sample\\?lstrcpy(szNewPath,  szDirPath);    
    lstrcat(szNewPath,  "*.txt");
    hSearch  =  FindFirstFile(szNewPath,  &FileData);    
      

  2.   

    肯定 对的。
    我可以跟踪到那一块来,只不过CREATEFIEL FAILED。 
      

  3.   

    现在就是说,一切都没有问题,只有CREATEFILE 为什么会失败。
      

  4.   

    用GetLastError()看看什么错误。
      

  5.   

    FindFirstFile("*.h",  &FileData);是在当前目录寻找lstrcpy(szNewPath,  szDirPath);    
    lstrcat(szNewPath,  FileData.cFileName); 
    变成了d:\sample\找到的文件然后CreateFile(  szNewPath,  GENERIC_READ  |  GENERIC_WRITE,  
    FILE_SHARE_READ|  FILE_SHARE_WRITE,  
    NULL,  
    OPEN_EXISTING|FILE_FLAG_OVERLAPPED,  
    FILE_ATTRIBUTE_NORMAL,  
    NULL  );
    是打开已存在的文件,你确定d:\sample里有你在别的目录找到的文件吗?