希望高手,牛人帮个忙

zjt88661199 2011-04-12 02:01:07
用C++实现以下功能:
第一 对一个指定的目录进行遍历,保存有用的信息.
第二步,按以下格式输出信息,每个文件一行,这时不再对目录和文件进行访问:
文件名 文件长度 文件的前4个字节 .

知道的给说说怎么做啊,我新手,菜鸟,一点思路都没有啊.
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2011-04-12
  • 打赏
  • 举报
回复
FindFirstFile/FindNextFile
野男孩 2011-04-12
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<windows.h>

void ListFile(FILE* fp)
{
char szCurPath[MAX_PATH]={0};
GetCurrentDirectory(MAX_PATH, szCurPath);

HANDLE hSearch;
WIN32_FIND_DATA data;
hSearch=FindFirstFile("*",&data);
do{
if(data.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY
&&strcmp(data.cFileName,".")
&&strcmp(data.cFileName,"..")){
SetCurrentDirectory(data.cFileName);
ListFile(fp);
SetCurrentDirectory("..");
}
else if(strcmp(data.cFileName,".")
&&strcmp(data.cFileName,"..")){
//cout<<data.cFileName<<endl;

//获得文件长度,并读取前4个字节
FILE* fp_read = fopen(data.cFileName, "rb");
fseek(fp_read, 0, FILE_END);
DWORD fsize = ftell(fp_read);
rewind(fp_read);
BYTE buf[8] = {0};
int read_size = fread(buf, 1, 4, fp_read);
fclose(fp_read);

//采集到的信息写到文件中
fprintf(fp, "%s\\%s %u %x%x%x%x\r\n", szCurPath, data.cFileName, fsize, buf[0], buf[1], buf[2], buf[3]);
fflush(fp);
}
}while(FindNextFile(hSearch,&data));
FindClose(hSearch);
}

int main(int argc,char *argv[])
{
//设置遍历路径
SetCurrentDirectory("E:\\Back_C");

FILE* fp = fopen("log.txt", "wb");
ListFile(fp);
fclose(fp);

return 0;
}
Jupiter_cuso4 2011-04-12
  • 打赏
  • 举报
回复
这个需要使用操作系统的API,看你在哪个系统低下做了。
如果你用Windows,你可以去MSDN查查FindFirstFile/FindNextFile等一系列API函数。Linux下也有类似的API。
找到文件名以后,可以读取文件信息,使用fstream。

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧