• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

怎样读取某个目录下文件名如“2004A.001”“2004A.002”……的所有文件?

wennier 2004-12-07 11:55:33
怎样读取某个目录下文件名如“2004A.001”“2004A.002”……的所有文件?文件个数不定,但前缀是一样的。该文件是文本格式的。
谢谢。
...全文
83 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Mr-Chen 2004-12-07
CString strPath;
strPath = m_Dir + "\\" + "2004A.*";
CFileFind file;
CString cFileName;
BOOL bContinue = file.FindFile(strPath);
while(bContinue)
{
bContinue = file.FindNextFile();
cFileName = file.GetFileName();
cFileName = cFileName.Left(cFileName.FindOneOf("."));
if(cFileName == "2004A")
{
...//do what you want to do
}

回复
hyamw 2004-12-07
补充一下:pf是FILE*类型,
FILE *pf =NULL;
回复
DentistryDoctor 2004-12-07
API:
FindFirstFile/FindNextFile/FindClose.
回复
hyamw 2004-12-07
char szText[50] = {0};
int i = 1;
while(TRUE)
{
sprintf(szText, "%s%03d", szPrefix, i);//得到文件名,szPrefix是前缀 %03d中的3可以改成你想要的长度
pf = fopen(szText, 'r');
if (pf == NULL)
{
break;
}
.............//读取操作
fclose(pf);
i++;
}
回复
老夏Max 2004-12-07
FILE *pSourFile; //指向源文件
CString sSourLine=""; //从源文件中取出的一行

pSourFile = fopen(sFileName,"rt");
if(pSourFile==NULL) {
AfxMessageBox("源文件打开失败!");
return false;
}
while(!feof(pSourFile)){
ReadLine(pSourFile, sSourLine);//读一行
}
}
//读取文件的一行
void CSetEx::ReadLine(FILE *pFile, CString &line)
{
line="";
char ch;
int pos=0;
while(!feof(pFile)){
//Read(&ch,1);
ch = fgetc(pFile);
if(ch=='\r'||ch=='\n')break;
line+=ch;
pos++;
if(line.Find("", 0))
{
ftell(pFile);
}
}
line.TrimRight('\r');
line.TrimRight('\n');
line.TrimRight('\r');
line.TrimRight(0xff); //过滤文件结束符
return;

}
回复
wennier 2004-12-07
不用MFC行不行?
回复
echoxue 2004-12-07
up
回复
老夏Max 2004-12-07
查找文件:
BOOL BrowseFile(CString strFile, CString strFilter, CStringList * pFileList, CStringList * pFileNameList, CStringList * pShowNameList)//查找文件函数
{
CFileFind FileFind;
CString SearchTarget = strFile;// + "\\" +strFilter;
if(SearchTarget.Right(1) != "\\")
SearchTarget += "\\";
SearchTarget += "*.*";
BOOL res = FileFind.FindFile(SearchTarget);
while(res)
{
res = FileFind.FindNextFile();
if(FileFind.IsDirectory() && !FileFind.IsDots())
{
//如果是一个子目录,用递归继续往深一层找
CString strPath = FileFind.GetFilePath();
CString strTitle = FileFind.GetFileTitle();
BrowseFile(strPath, strFilter, pFileList, pFileNameList, pShowNameList);
}
else if(!FileFind.IsDirectory() && !FileFind.IsDots())
{
//显示当前访问的文件
CString strExtName;
CString strName;
strName = FileFind.GetFileName();
strExtName = strName.Right(strName.GetLength() - strName.Find('.')-1);
strExtName.MakeUpper();
if(!strExtName.CompareNoCase(strFilter))//扩展名正确
{
CString strPath = FileFind.GetFilePath();
pFileList->AddTail(strPath);
pFileNameList->AddTail(strName);
strName = strName.Left(strName.Find('.'));
pShowNameList->AddTail(strName);
}
}
}
FileFind.Close();//关闭
return TRUE;
}
然后读取:
CStdioFile file;
if(file.Open(_T(m_sAppPath+"\\text"),CFile::modeReadWrite))
{
CString sss;
DWORD o=0;
int ol=0;
while(file.ReadString(sss))
{
if(find.FindFile(m_sAppPath+"\\text"))
m_cbBkGround.AddString(sss);//sss即为一行
}
}
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-12-07 11:55
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……