一个对磁盘,文件夹,文件进行遍历的类
2006-12-26 15:28
239 查看
//.h
#pragma once
#include <vector>
//封装一个对磁盘,文件夹,文件进行遍历的类
class CGetFileOrFolder
...{
protected:
//记录磁盘的串
std::vector<CString> m_strDisk;
//记录文件夹的串
std::vector<CString> m_strFolder;
//记录文件的串
std::vector<CString> m_strFile;
private:
void get_all_disk();
public:
//磁盘的枚举
int get_disk_count();
CString get_one_disk(int nIndex);
//文件夹的枚举
bool search_folder_file(CString path);
int get_folder_count();
CString get_one_folder(int nIndex);
//文件的枚举
int get_file_count();
CString get_one_file(int nIndex);
public:
CGetFileOrFolder(void);
~CGetFileOrFolder(void);
};
//使用方法
//磁盘:
/**//*
CGetFileOrFolder g;
int n = g.get_disk_count();
for(int i = 0; i < n; i++)
AfxMessageBox(g.get_one_disk(i));
*/
//文件(文件夹)
/**//*
CGetFileOrFolder g;
g.search_folder_file(g.get_one_disk(1));
for(int i = 0; i < g.get_file_count(); i++)
AfxMessageBox(g.get_one_file(i));
*/
//.cpp
//遍历磁盘的类
#include "StdAfx.h"
#include ".getfileorfolder.h"
CGetFileOrFolder::CGetFileOrFolder(void)
...{
}
CGetFileOrFolder::~CGetFileOrFolder(void)
...{
}
void CGetFileOrFolder::get_all_disk()
...{
CString str;
char buf[26*4+1];
DWORD n = GetLogicalDriveStrings(100,buf);
for(int i = 0; i < (int)n; i+=4)
...{
str.Format("%c%c",buf[i],buf[i+1]);
this->m_strDisk.push_back(str);
}
}
int CGetFileOrFolder::get_disk_count()
...{
if(this->m_strDisk.empty())
this->get_all_disk();
return (int)this->m_strDisk.size();
}
CString CGetFileOrFolder::get_one_disk(int nIndex)
...{
int n = this->get_disk_count();
if(nIndex >= n)
return _T("");
return this->m_strDisk[nIndex];
}
//参数path必须以 / 结束
//找到指定 目录的文件夹,文件,将他们信息存入,map中
bool CGetFileOrFolder::search_folder_file(CString path)
...{
if(path == _T(""))
return true;
CFileFind mysearch;
int n_eof=mysearch.FindFile((LPCTSTR)(path+"*.*"));
this->m_strFile.clear();
this->m_strFolder.clear();
while(n_eof) ...{
n_eof = mysearch.FindNextFile();
// not a directory
if(!mysearch.IsDirectory()) ...{
this->m_strFile.push_back(mysearch.GetFileName());
}//if(!mysearch.IsDirectory())
else ...{
CString name=mysearch.GetFileTitle();
if(!mysearch.IsDots())
this->m_strFolder.push_back(mysearch.GetFileName());
}//else if(!mysearch.IsDirectory())
}//while(!n_eof)
mysearch.Close();
return true;
}
int CGetFileOrFolder::get_folder_count()
...{
return (int)this->m_strFolder.size();
}
CString CGetFileOrFolder::get_one_folder(int nIndex)
...{
int n = this->get_folder_count();
if(nIndex >= n)
return _T("");
return this->m_strFolder[nIndex];
}
int CGetFileOrFolder::get_file_count()
...{
return (int)this->m_strFile.size();
}
CString CGetFileOrFolder::get_one_file(int nIndex)
...{
int n = this->get_file_count();
if(nIndex >= n)
return _T("");
return this->m_strFile[nIndex];
}
#pragma once
#include <vector>
//封装一个对磁盘,文件夹,文件进行遍历的类
class CGetFileOrFolder
...{
protected:
//记录磁盘的串
std::vector<CString> m_strDisk;
//记录文件夹的串
std::vector<CString> m_strFolder;
//记录文件的串
std::vector<CString> m_strFile;
private:
void get_all_disk();
public:
//磁盘的枚举
int get_disk_count();
CString get_one_disk(int nIndex);
//文件夹的枚举
bool search_folder_file(CString path);
int get_folder_count();
CString get_one_folder(int nIndex);
//文件的枚举
int get_file_count();
CString get_one_file(int nIndex);
public:
CGetFileOrFolder(void);
~CGetFileOrFolder(void);
};
//使用方法
//磁盘:
/**//*
CGetFileOrFolder g;
int n = g.get_disk_count();
for(int i = 0; i < n; i++)
AfxMessageBox(g.get_one_disk(i));
*/
//文件(文件夹)
/**//*
CGetFileOrFolder g;
g.search_folder_file(g.get_one_disk(1));
for(int i = 0; i < g.get_file_count(); i++)
AfxMessageBox(g.get_one_file(i));
*/
//.cpp
//遍历磁盘的类
#include "StdAfx.h"
#include ".getfileorfolder.h"
CGetFileOrFolder::CGetFileOrFolder(void)
...{
}
CGetFileOrFolder::~CGetFileOrFolder(void)
...{
}
void CGetFileOrFolder::get_all_disk()
...{
CString str;
char buf[26*4+1];
DWORD n = GetLogicalDriveStrings(100,buf);
for(int i = 0; i < (int)n; i+=4)
...{
str.Format("%c%c",buf[i],buf[i+1]);
this->m_strDisk.push_back(str);
}
}
int CGetFileOrFolder::get_disk_count()
...{
if(this->m_strDisk.empty())
this->get_all_disk();
return (int)this->m_strDisk.size();
}
CString CGetFileOrFolder::get_one_disk(int nIndex)
...{
int n = this->get_disk_count();
if(nIndex >= n)
return _T("");
return this->m_strDisk[nIndex];
}
//参数path必须以 / 结束
//找到指定 目录的文件夹,文件,将他们信息存入,map中
bool CGetFileOrFolder::search_folder_file(CString path)
...{
if(path == _T(""))
return true;
CFileFind mysearch;
int n_eof=mysearch.FindFile((LPCTSTR)(path+"*.*"));
this->m_strFile.clear();
this->m_strFolder.clear();
while(n_eof) ...{
n_eof = mysearch.FindNextFile();
// not a directory
if(!mysearch.IsDirectory()) ...{
this->m_strFile.push_back(mysearch.GetFileName());
}//if(!mysearch.IsDirectory())
else ...{
CString name=mysearch.GetFileTitle();
if(!mysearch.IsDots())
this->m_strFolder.push_back(mysearch.GetFileName());
}//else if(!mysearch.IsDirectory())
}//while(!n_eof)
mysearch.Close();
return true;
}
int CGetFileOrFolder::get_folder_count()
...{
return (int)this->m_strFolder.size();
}
CString CGetFileOrFolder::get_one_folder(int nIndex)
...{
int n = this->get_folder_count();
if(nIndex >= n)
return _T("");
return this->m_strFolder[nIndex];
}
int CGetFileOrFolder::get_file_count()
...{
return (int)this->m_strFile.size();
}
CString CGetFileOrFolder::get_one_file(int nIndex)
...{
int n = this->get_file_count();
if(nIndex >= n)
return _T("");
return this->m_strFile[nIndex];
}
相关文章推荐
- 封装一个对磁盘,文件夹,文件进行遍历的类
- 递归遍历一个文件夹,对文件进行操作,使用lstat时的悲剧
- 对于一个文件夹中的所有txt文件进行遍历的程序
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- 遍历一个文件夹下的所有文件,并对其中内容进行去重。
- JAVA遍历一个文件夹中的所有文件
- 遍历一个目录下的所用文件和子文件夹
- C#遍历一个文件夹下的所有文件包括子文件夹
- java遍历文件夹读取文件进行处理
- php遍历一个文件夹下的所有文件和子文件夹
- JS如何遍历一个文件夹下的所有文件与目录
- 一个php函数,能够遍历一个文件夹下的所有文件和子文件夹
- 使用递归方式遍历指定磁盘路径下的文件及文件夹
- JAVA 一个简单的文件写入代码(遍历文件夹获取所有文件、写入缓冲池、获取文件绝对路径、按后缀名过滤文件)
- 写出一个函数,能够遍历一个文件下的所有文件夹和子文件夹(新浪)
- 遍历一个文件夹下面的所有文件MFC版本
- PHP遍历输出一个文件夹下的所有文件
- 遍历一个文件夹下的所有文件和子文件夹
- Java中遍历一个文件夹下所有文件及目录的操作
- 【转载】windows 递归遍历一个文件夹下面的所有文件