windows遍历目录下所有文件
来源:互联网 发布:逍遥游 软件 编辑:程序博客网 时间:2024/05/04 19:08
windows遍历目录下所有文件
目录(?)[+]
在windows中遍历目录下的所有文件主要是使用FindFirstFile和FindNextFile通过递归调用实现的,类似于Linux的opendir和readdir。
在MSDN中,FindFirstFile的声明如下:
LPCTSTR lpFileName,
LPWIN32_FIND_DATA lpFindFileData
);
参数说明:
- lpFileName
- [in] A pointer to a null-terminated string that specifies a valid directory or path, and file name that can contain wildcard characters (* and ?).
If the string ends with a wildcard, period, or directory name, the user must have access to the root and all subdirectories on the path.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "//?/" to the path. For more information, see Naming a File.
Windows Me/98/95: This string must not exceed MAX_PATH characters.
- lpFindFileData
- [out] A pointer to the WIN32_FIND_DATA structure that receives information about a found file or subdirectory.
返回值说明:
If the function succeeds, the return value is a search handle used in a subsequent call to FindNextFile orFindClose.
If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, callGetLastError.
FindNextFile:
HANDLE hFindFile,
LPWIN32_FIND_DATA lpFindFileData
);
Parameters
- hFindFile
- [in] Search handle returned by a previous call to the FindFirstFile or FindFirstFileEx function.
- lpFindFileData
- [out] Pointer to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory.
The structure can be used in subsequent calls to FindNextFile to see the found file or directory.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero (0). To get extended error information, call GetLastError.
If no matching files can be found, the GetLastError function returns ERROR_NO_MORE_FILES.
涉及的WIN32_FIND_DATA结构体的声明:
WIN32_FIND_DATA
The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, orFindNextFile function.
typedef struct _WIN32_FIND_DATA { DWORD <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">dwFileAttributes</a>; FILETIME <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">ftCreationTime</a>; FILETIME <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">ftLastAccessTime</a>; FILETIME <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">ftLastWriteTime</a>; DWORD <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">nFileSizeHigh</a>; DWORD <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">nFileSizeLow</a>; DWORD <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">dwReserved0</a>; DWORD <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">dwReserved1</a>; TCHAR <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">cFileName</a>[MAX_PATH]; TCHAR <a target=_blank class="synParam" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/" style="color: rgb(51, 102, 153); text-decoration: none;">cAlternateFileName</a>[14];} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
Members
- dwFileAttributes
- File attributes of the file found.
This member can be one or more of the following values.
Attribute Meaning FILE_ATTRIBUTE_ARCHIVEThe file or directory is an archive file or directory.Applications use this attribute to mark files for backup or removal.
FILE_ATTRIBUTE_COMPRESSEDThe file or directory is compressed.For a file, this means that all of the data in the file is compressed.
For a directory, this means that compression is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_DIRECTORYThe handle identifies a directory.FILE_ATTRIBUTE_ENCRYPTEDThe file or directory is encrypted.For a file, this means that all data in the file is encrypted.
For a directory, this means that encryption is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_HIDDENThe file or directory is hidden.It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_NORMALThe file or directory does not have another attributes set.This attribute is valid only if used alone.
FILE_ATTRIBUTE_OFFLINEThe file data is not immediately available.This attribute indicates that the file data has been physically moved to offline storage.
This attribute is used by Remote Storage, the hierarchical storage management software.
Applications should not arbitrarily change this attribute.
FILE_ATTRIBUTE_READONLYThe file or directory is read-only.Applications can read the file, but cannot write to it or delete it.
For a directory, applications cannot delete it.
FILE_ATTRIBUTE_REPARSE_POINTThe file or directory has an associated reparse point.FILE_ATTRIBUTE_SPARSE_FILEThe file is a sparse file.FILE_ATTRIBUTE_SYSTEMThe file or directory is part of the operating system, or is used exclusively by the operating system.FILE_ATTRIBUTE_TEMPORARYThe file is being used for temporary storage.File systems attempt to keep all of the data in memory for quick access, rather than flushing it back to mass storage.
A temporary file should be deleted by the application as soon as it is not needed.
- ftCreationTime
- A FILETIME structure that specifies when the file or directory is created.
If the underlying file system does not support creation time, this member is 0 (zero).
- ftLastAccessTime
- A FILETIME structure.
For a file, the structure specifies when the file is last read from, written to, or, in the case of executable files, run.
For a directory, the structure specifies when the directory is created. If the underlying file system does not support last access time, this member is 0 (zero).On the FAT file system, the specified date for both files and directories is correct, but the time of day is always set to midnight.
- ftLastWriteTime
- A FILETIME structure.
For a file, the structure specifies when the file is last written to, truncated, or overwritten (for example, withWriteFile or SetEndOfFile). This date and time is not updated when file attributes or security descriptors are changed.
For a directory, the structure specifies when the directory is created. If the underlying file system does not support last write time, this member is 0 (zero). - nFileSizeHigh
- High-order DWORD value of the file size, in bytes.
This value is 0 (zero) unless the file size is greater than MAXDWORD.
The size of the file is equal to (nFileSizeHigh * (MAXDWORD+1)) + nFileSizeLow.
- nFileSizeLow
- Low-order DWORD value of the file size, in bytes.
- dwReserved0
- If the dwFileAttributes member includes the FILE_ATTRIBUTE_REPARSE_POINT attribute, this member specifies the reparse tag.
Otherwise, this value is undefined and should not be used.
- dwReserved1
- Reserved for future use.
- cFileName
- A null-terminated string that specifies the name of a file.
- cAlternateFileName
- A null-terminated string that specifies an alternative name for the file.
This name is in the classic 8.3 (filename.ext) file name format.
下面是实现的一个例子:
* 函数名:FindFile
* 输入参数:pFilePath(路径)
* 输出参数:无
* 功能
*********************************/
void FindFile(char * pFilePath)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char DirSpec[MAX_PATH + 1];// 指定路径
DWORD dwError;
strncpy (DirSpec, pFilePath, strlen(pFilePath) + 1);
strncat (DirSpec, "/*", 3);
hFind = FindFirstFile((DirSpec, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid file handle. Error is %u ", GetLastError());
return ;
}
else
{
if (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY )
{
printf (" %s ", FindFileData.cFileName); //找到文件
}
else if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
&& strcmp(FindFileData.cFileName, ".") != 0
&& strcmp(FindFileData.cFileName, "..") != 0)
{ //找到目录
char Dir[MAX_PATH + 1];
strcpy(Dir, pFilePath);
strncat(Dir, "/", 2);
strcat(Dir, FindFileData.cFileName);
FindFile(Dir);
}
while (FindNextFile(hFind, &FindFileData) != 0)
{
if (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
{ //找到文件
printf (" %s ", FindFileData.cFileName);
}
else if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
&& strcmp(FindFileData.cFileName, ".") != 0
&& strcmp(FindFileData.cFileName, "..") != 0)
{ //找到目录
char Dir[MAX_PATH + 1];
strcpy(Dir, pFilePath);
strncat(Dir, "/", 2);
strcat(Dir, FindFileData.cFileName);
FindFile(Dir);
}
}
dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
printf ("FindNextFile error. Error is %u ", dwError);
return;
}
}
}
- windows遍历目录下所有文件
- windows遍历目录下所有文件
- windows遍历目录下所有文件
- windows遍历目录下所有文件
- 遍历目录下所有文件
- 遍历目录下所有文件
- 在Windows下,如何遍历某目录里所有文件?
- 遍历目录下所有所有文件
- Windows下遍历文件目录
- 遍历目录下的所有文件
- matlab 遍历目录下所有文件
- 遍历一个目录下的所有文件
- 遍历目录下所有文件(VC)
- 遍历指定目录下的所有文件
- Perl遍历目录下所有文件
- 遍历删除当前目录下所有文件
- 遍历目录下所有的子文件
- win32 api遍历目录下所有文件
- mxArray数据类型
- 自定义视图的绘制
- oracle事务
- 未忘你 魅族FlymeOS新固件 For MX/MX2更新
- 开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm
- windows遍历目录下所有文件
- Send and Receive JSON objects to Web Service Methods using jQuery AJAX in ASP.Net
- 回收站文件没了如何找回呢
- 几个技术不错的技术网站
- 蜗牛—JQuery学习之获取鼠标坐标
- 使用crond 在linux中设置计划任务
- Android4.X 应用层读取SIM卡联系人的过程
- 移植boa后运行CGI程序加载LD_LIBRARY_PATH环境变量问题
- 从云计算到固态硬盘 颠覆性技术成熟度分析