当前位置:首页 » 文件管理 » vc遍历文件夹与文件

vc遍历文件夹与文件

发布时间: 2024-05-14 04:36:19

⑴ 璇烽梾濡备綍鐢╟璇瑷瀹炵幇阆嶅巻镆ユ垒纾佺洏涓嬬殑exe鏂囦欢锛 鎴戞槸鍦╒C6.0骞冲彴涓

璋幂敤DOS 锻戒护 dir 灏卞彲浠ヤ简銆
濡傛灉鍙瑕佹樉绀烘枃浠跺悕锛屽姞 阃夐” /B
濡傛灉瑕佹樉绀烘墍链夊瓙鏂囦欢澶归噷镄勬枃浠跺悕锛 锷 阃夐” /S
渚嫔 DIR C:\*.exe /B /S
濡傛灉瑕佹妸鏄剧ず 杞钖戝埌鏂囦欢 DIR C:\*.exe /B /S >> abc.lis
DOS 锻戒护 鍙浠ョ敤 sprintf 锅氭垚锛岀敤 system() 璁╁畠镓ц屻
绋嫔簭濡备笅锛
#include <stdio.h>
#include <stdlib.h>
main(){
char cmd[80];
char d;
for (d='C';d<='Z';d++) // 瀵 纾佺洏鍙 C: D: E: .....Z: 寰鐜
{
sprintf(cmd,"DIR %c:\\*.exe /B",d); // 锻戒护
// printf("%s\n",cmd); // 妫镆 锻戒护瀛楃︿覆 鏄钖︽g‘
system(cmd); // 镓ц
}
return 0;
}

⑵ 在windows下 怎么用c语言遍历文件夹要用纯c的

什么叫纯C?
用C语言遍历文件肯定需要用到函数,标准C下貌似没有这个函数,但是使用VC的函数库可能可以实现,如果实在不行可以用第三方函数库,,,还不行的话用system("command");引用dos命令可以遍历,

⑶ 鎴戞兂鐢╒C镆ユ垒涓涓鏂囦欢澶归噷镄勬墍链涂XT鏂囨。涓链鏂扮殑涓涓 骞惰诲彇瀹幂殑鍐呭 璇烽梾濡备綍镎崭綔锛燂纻锛

缁欎綘涓涓镐濊矾鍏堥亶铡呜繖涓鏂囦欢澶逛笅镄则xt鏂囦欢锛岀劧钖庨愪釜鍒涘缓姣旇缉镞堕棿锛屽苟淇濆瓨链鏂扮殑鏂囦欢钖嶅埌涓涓鍙橀噺涓婇溃锛岀劧钖庣敤CFile锛氾细read璇诲彇鍐呭广

缁欎綘涓娈典吉浠g爜镊宸变慨鏀硅瘯璇

HANDLEhSearch;
WIN32_FIND_DATAFileData,tempFileData;
hSearch=FindFirstFile("E:\XX\*.txt",&FileData);//棣栧厛镓惧埌镄勬槸钬.钬
if(hSearch==INVALID_HANDLE_VALUE)return0;
if(!FindNextFile(hSearch,&FileData))return0;//铹跺悗镓惧埌镄勬槸钬..钬
FindNextFile(hSearch,&tempFileData);//鎶婄涓涓鏂囦欢镄勪俊鎭淇濆瓨鍦╰empFileData涓
while(1)
{
if(!FindNextFile(hSearch,&FileData))
break;
else
{
if锛圕ompareFileTime(FileData.ftCreationTime,tempFileData.ftCreationTime)==-1锛墈
tempFileDataFileData
}
}
}
FindClose(hSearch);
CFilefile;
file.open("璺寰+\tempFileData.cFileName");
charbuf[xx];
file.read(buf......);
file.close();

⑷ VC6.0编译环境下遍历文件夹的源代码

#include "stdafx.h"
#include <windows.h>

BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}

void FindInAll(::LPCTSTR lpszPath)
{TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, "*.*"); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;

do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
// 对文件进行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄

}
int main(int argc, char* argv[])
{
FindInAll("e:\\result");
return 0;
}
//结合网上资料写出的,作者--杨克群^_^

⑸ VC环境中用C语言查找当前路径下的所有文件和文件夹的函数是什么

这是我的TFTP程序中的一个函数,是搜索当前盘符下的所有文件,包括文件的大小,并发送到客户端,其中就有查找当前路径下的文件,你自己挑一下,应该能完成你的需求。
void FileList(sockaddr_in sour_addr,char strStartDir[])
{
char sendbuffer[1024];
sockaddr_in destaddr;

int sourlen = 0;
int ret = 0;
int len = 0;
int flen = 0;

fd_set fdr;

unsigned short blocknum = 0;

FILE *file;
char filename[128];

strcpy(filename,strStartDir+2); /*获取文件名*/

strcat(filename,"\\*");
destaddr.sin_family = AF_INET;
destaddr.sin_port = sour_addr.sin_port;
destaddr.sin_addr.s_addr = inet_addr(desthost);//

WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(filename, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle");
}
else
{
while(FindNextFile(hFind,&FindFileData))
{
printf(FindFileData.cFileName);
printf("\r\n");
memset(sendbuffer,'\0',1024);

len = filldata(blocknum++,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr));

}
len = fillover(blocknum,"Over",4,sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr));
FindClose(hFind);
return;
}
}

⑹ MFC CFileFind和CFile遍历一个指定文件夹并删除里面的所有文件(里面没有下层文件夹目录)问题

首先鄙视一下楼主的代码 毫无章法 乱定义变量 居然还不按同一风格定义

其次 你写的这玩意 我不知道 你是想学习字符转换呢 还是 想遍历文件

最后我想说的是 他们说的都没找到本质问题上去

把这句话
pFile = (LPSTR)(LPCTSTR)finder.GetFilePath();
改为 下面2句
CString str = finder.GetFilePath();
pFile = (LPSTR)(LPCTSTR) str;
你的程序就没问题了

下面看偶的分析
第一
char* pFile;
TCHAR* p;
你让 p = pFile ; 居然没出问题 说明 你的char 和 TCHAR 是一样的玩意 你多半用的是VC6开发
要么就是自己设置了工程属性为 多字节的, 所以根本不存在什么 字符集的转换
什么 UNICODE ANSI 多字节都是瞎扯

第二
断点tiao'shi
pFile = (LPSTR)(LPCTSTR)finder.GetFilePath();
执行后 pFile 指向的是乱码 所以你再往后运行肯定就会出错了
仔细看一下 finder.GetFilePath() 返回的是一个CString;
莫非楼主的 从CString 转换 为 char * 的方式错误了?
测试
CString str("123");
pFile = (LPSTR)(LPCTSTR) str;
完全没有问题啊...
所以问题 归根到底 在与 返回值是 CString 会导致很多 bug的哦
这如果要说起来就太多了... 楼主再找度娘吧

//-- 下面的写法稍微规范点 我就不懂 你定义 TCHAR 为了什么
int main()
{
CFileFind finder;

CString path("D:\\1\\Cache\\");
CString file;

BOOL has = finder.FindFile(path+"*.*");
while(has)
{
has = finder.FindNextFile();
//IsDots 就是的 . 和 .. 如果你不判断是文件夹 它会把当成文件去删除,结果去删除不掉
//在Windows系统下 文件和文件夹被看作同样的东西
if( !finder.IsDots() && !finder.IsDirectory() )
{
file= finder.GetFilePath();
//CFile::Remove(file); 你这函数都没有返回值 你好意思直接就在下面显示删除成功
if (DeleteFile(file))
{
cout<<file<<" 删除成功"<<endl;
}
else
{
cout<<file<<" 删除失败, 非共享的文件是否正在使用?"<<endl;
}
}
}
finder.Close(); //----
return 0;
}

热点内容
纪念品数据库 发布:2025-01-17 22:05:51 浏览:182
冗余压缩发 发布:2025-01-17 21:59:17 浏览:931
whatsappandroid 发布:2025-01-17 21:59:16 浏览:944
iptables限制ip访问 发布:2025-01-17 21:38:01 浏览:174
易拉罐压缩机 发布:2025-01-17 21:25:35 浏览:924
在c语言是什么意思啊 发布:2025-01-17 21:21:02 浏览:516
re0脚本 发布:2025-01-17 21:13:34 浏览:305
甜蜜家园密码箱有什么用 发布:2025-01-17 21:07:28 浏览:48
有教少儿编程 发布:2025-01-17 20:55:37 浏览:37
直播背脚本 发布:2025-01-17 20:50:18 浏览:410