在windows上实现用c语言显示指定目录下的空目录和空文件
时间: 2024-01-21 07:20:15 浏览: 119
C/C++获取目录下的文件列表信息
可以使用Windows API来实现这个功能。以下是一个示例程序,可以列出指定目录下的空目录和空文件:
```c
#include <windows.h>
#include <stdio.h>
void listEmptyFoldersAndFiles(const char *dirPath);
int main() {
const char *dirPath = "C:\\test"; // 指定目录路径
listEmptyFoldersAndFiles(dirPath);
return 0;
}
void listEmptyFoldersAndFiles(const char *dirPath) {
WIN32_FIND_DATA fd;
HANDLE hFind = INVALID_HANDLE_VALUE;
char path[MAX_PATH];
// 构造搜索路径
snprintf(path, MAX_PATH, "%s\\*", dirPath);
// 查找第一个文件/目录
hFind = FindFirstFile(path, &fd);
if (hFind == INVALID_HANDLE_VALUE) {
printf("无法打开目录: %s\n", dirPath);
return;
}
do {
// 忽略 "." 和 ".." 目录
if (strcmp(fd.cFileName, ".") == 0 || strcmp(fd.cFileName, "..") == 0) {
continue;
}
// 构造完整路径
snprintf(path, MAX_PATH, "%s\\%s", dirPath, fd.cFileName);
// 判断是否是目录
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
// 如果是目录,递归遍历
listEmptyFoldersAndFiles(path);
} else {
// 如果是文件,判断是否为空文件
HANDLE hFile = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
DWORD fileSize = GetFileSize(hFile, NULL);
if (fileSize == 0) {
printf("空文件: %s\n", path);
}
CloseHandle(hFile);
}
}
} while (FindNextFile(hFind, &fd) != 0);
FindClose(hFind);
}
```
这个程序会递归遍历指定目录下的所有子目录和文件,并输出空目录和空文件的路径。如果指定的目录不存在或无法打开,程序会输出错误信息。
阅读全文