C++、WIN API、MFC分别遍历文件夹、获取文件名称的三种方式【耿然原创】
2012-08-13 23:56
761 查看
都是默认相对路径(程序所在路径)
【1】C++方式:
#include <iostream>
#include <string>
#include <fstream>
#include <io.h>
using namespace std;
int main()
{
struct _finddata_t fileinfo;
string curr="*.*";//cuu="C://xxx//yyy";
long handle;
if((handle=_findfirst(curr.c_str(),&fileinfo))==-1L)
{
cout<<"can not find file!"<<endl;
return 0;
}
else
{
cout<<fileinfo.name<<endl;
while(!(_findnext(handle,&fileinfo)))
{
cout<<fileinfo.name<<endl;
}
}
_findclose(handle);
}
【2】WIN API:
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
CFile mFile;
CString str;
mFile.Open("fileName.txt",CFile::modeCreate|CFile::modeWrite);
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile("*.*",&FindFileData);//"*.*"可改为其他路径
if(INVALID_HANDLE_VALUE==hFind)
return;
while(1)
{
str = FindFileData.cFileName;
str="\r\n\r\n" + str;
mFile.SeekToEnd();
mFile.Write(str.GetBuffer(0),str.GetLength());
mFile.Flush();
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
mFile.Close();
【3】MFC:(这种方式的文件名有个长度限制,好像在200-300)
#include "stdafx.h"
CFile mFile;
mFile.Open("fileName.txt",CFile::modeCreate|CFile::modeWrite);
CString str;
int ok=find.FindFile(_T("*.*"));//"*.*"可改为其他路径
ok = find.FindNextFile();
while(ok)
{
str=find.GetFileName();
str="\r\n\r\n" + str;
mFile.SeekToEnd();
mFile.Write(str.GetBuffer(0),str.GetLength());
ok = find.FindNextFile();
}
find.Close();
mFile.Close();
注意:
(1)"*.*"可改为其他路径或格式,比如"C://tmp//*.txt"表示C盘tmp文件夹下所有的文本文档。
(2)第二个和第三个的头文件有点混合。我是新手,把两个程序写到一个文件、一个函数去了。。。
这是我知道的“C++、WIN API、MFC分别遍历文件夹、获取文件名称的三种方式”,各位还知道其他方法吗?C语言也行。但不用C#和JAVA。
【1】C++方式:
#include <iostream>
#include <string>
#include <fstream>
#include <io.h>
using namespace std;
int main()
{
struct _finddata_t fileinfo;
string curr="*.*";//cuu="C://xxx//yyy";
long handle;
if((handle=_findfirst(curr.c_str(),&fileinfo))==-1L)
{
cout<<"can not find file!"<<endl;
return 0;
}
else
{
cout<<fileinfo.name<<endl;
while(!(_findnext(handle,&fileinfo)))
{
cout<<fileinfo.name<<endl;
}
}
_findclose(handle);
}
【2】WIN API:
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
CFile mFile;
CString str;
mFile.Open("fileName.txt",CFile::modeCreate|CFile::modeWrite);
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile("*.*",&FindFileData);//"*.*"可改为其他路径
if(INVALID_HANDLE_VALUE==hFind)
return;
while(1)
{
str = FindFileData.cFileName;
str="\r\n\r\n" + str;
mFile.SeekToEnd();
mFile.Write(str.GetBuffer(0),str.GetLength());
mFile.Flush();
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
mFile.Close();
【3】MFC:(这种方式的文件名有个长度限制,好像在200-300)
#include "stdafx.h"
CFile mFile;
mFile.Open("fileName.txt",CFile::modeCreate|CFile::modeWrite);
CString str;
int ok=find.FindFile(_T("*.*"));//"*.*"可改为其他路径
ok = find.FindNextFile();
while(ok)
{
str=find.GetFileName();
str="\r\n\r\n" + str;
mFile.SeekToEnd();
mFile.Write(str.GetBuffer(0),str.GetLength());
ok = find.FindNextFile();
}
find.Close();
mFile.Close();
注意:
(1)"*.*"可改为其他路径或格式,比如"C://tmp//*.txt"表示C盘tmp文件夹下所有的文本文档。
(2)第二个和第三个的头文件有点混合。我是新手,把两个程序写到一个文件、一个函数去了。。。
这是我知道的“C++、WIN API、MFC分别遍历文件夹、获取文件名称的三种方式”,各位还知道其他方法吗?C语言也行。但不用C#和JAVA。
相关文章推荐
- C++获取文件夹下所有文件名称的三种方式
- Atitit 遍历文件夹目录解决方案与规范 attilax总结 1. 规范 2 1.1. 注意的不要同时改变文件夹内容,增删文件。这样获取到的目录list不会变化 2 1.2. 主义中文名称文件读写
- 多种方式获取文件夹里的文件名称
- mfc 获取一个文件夹一级目录下的文件或文件夹名称
- MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
- C++遍历文件夹获取文件列表
- Delphi中获取文件夹路径的三种方式 和实现文件复制
- c++遍历查找文件夹路径下的所有文件(比如.txt) 使用的是MFC的CFileFind类
- 基于C++和MFC遍历指定文件夹下指定格式的文件
- c++ 遍历文件夹所有文件
- android如何获取手机里面的中文名称的文件(原创)
- java语言反射的概述以及三种获取字节码文件对应的Class类型的对象的方式
- MFC浏览文件夹,浏览保存文件, 获取当前路径
- C++遍历文件夹下的所有文件
- 获取文件夹文件(C++)
- C++下遍历文件夹内文件
- 获取文件夹以及文件名称
- Java递归遍历删除拷贝文件以及获取文件夹大小
- VC++/MFC 小程序 文件/目录对话框 递归遍历文件/文件夹
- 遍历一个文件夹下面的文件(半原创)