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

wennier 2004-12-07 11:55:33
怎样读取某个目录下文件名如“2004A.001”“2004A.002”……的所有文件?文件个数不定,但前缀是一样的。该文件是文本格式的。
谢谢。
...全文
103 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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即为一行
}
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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