当前位置:首页 » 文件管理 » mfc文件夹名

mfc文件夹名

发布时间: 2023-01-31 12:51:33

Ⅰ MFC中遍历当前目录下的文件和文件夹,然后将所有找到的文件夹的名字提取出来

把以下代码放到Win32控制台运行,亲测可用:

#include <windows.h>
#define FILEILTER "*.*" //查找条件,例如查找.exe格式的那么就用*.exe,当然也可以直接用setup.exe
#include "iostream.h"
#include "stdio.h"

BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}

void FindInAll(LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, FILEILTER); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;

do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
{
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
}
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
}
// 对文件进行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄

}
int main(int argc, char* argv[])
{
FindInAll("E:"); //这里设置目录为E:,请根据需要更改
return 0;
}

Ⅱ MFC获取指定文件夹文件目录

在MFC中,使用CFileFind类,可以枚举一个目录下的所有文件和子目录。

示例:

voidListFolder(constCString&sPath)
{
CFileFindff;
BOOLbFound=ff.FindFile(sPath+"\*.*");
while(bFound)
{
bFound=ff.FindNextFile();
if(ff.IsDirectory())//是目录
{
if(!ff.IsDots())//不是本级目录或父目录(.和..)
ListFolder(ff.GetFilePath());//递归子目录
}
else
{
AfxMessageBox("文件:"+ff.GetFilePath());
}
}
ff.Close();
}

Ⅲ MFC按钮打开选择一个文件夹,然后获得文件夹中的所有txt文件名称!

这个满足你的要求
s返回文件路径
#define
DLG_FILTER
"ALL
Files
(*.*)|*.*||"
#define
DLG_EXT
"*
"
CFileDialog
dlg(TRUE,
_T(DLG_EXT),
NULL,
OFN_HIDEREADONLY
|
OFN_OVERWRITEPROMPT
|
OFN_ALLOWMULTISELECT,
_T(DLG_FILTER));
if
(dlg.DoModal()
==
IDOK)
{
POSITION
pos
=
dlg.GetStartPosition();
while
(pos
!=
0)
{
CString
s
=
dlg.GetNextPathName(pos);
}
}
下面代码,可以选择文件夹,会返回文件夹的路径
需要自己查找每个文件
char*
GetPath(HWND
hWnd,char*
pBuffer)
{
BROWSEINFO
bf;
LPITEMIDLIST
lpitem;
memset(&bf,0,sizeof
BROWSEINFO);
bf.hwndOwner=hWnd;
bf.lpszTitle=
"选择路径";
bf.ulFlags=BIF_RETURNONLYFSDIRS;
//属性你可自己选择
lpitem=SHBrowseForFolder(&bf);
if(lpitem==NULL)
//如果没有选择路径则返回
0
return
0;
//如果选择了路径则复制路径,返回路径长度
SHGetPathFromIDList(lpitem,pBuffer);
return
pBuffer;
}

Ⅳ 如何在mfc中实现打开一个文件,获取文件名

这个满足你的要求s返回文件路径#defineDLG_FILTER"ALLFiles(*.*)|*.*||"#defineDLG_EXT"*"CFileDialogdlg(TRUE,_T(DLG_EXT),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,_T(DLG_FILTER));if(dlg.DoModal()==IDOK){POSITIONpos=dlg.GetStartPosition();while(pos!=0){CStrings=dlg.GetNextPathName(pos);}}下面代码,可以选择文件夹,会返回文件夹的路径需要自己查找每个文件char*GetPath(HWNDhWnd,char*pBuffer){BROWSEINFObf;LPITEMIDLISTlpitem;memset(&bf,0,sizeofBROWSEINFO);bf.hwndOwner=hWnd;bf.lpszTitle="选择路径";bf.ulFlags=BIF_RETURNONLYFSDIRS;//属性你可自己选择lpitem=SHBrowseForFolder(&bf);if(lpitem==NULL)//如果没有选择路径则返回0return0;//如果选择了路径则复制路径,返回路径长度SHGetPathFromIDList(lpitem,pBuffer);returnpBuffer;}

Ⅳ mfc怎么读取文件夹中文件的名字

void DelFiles(CString& strDirPath, CString strFileName, BOOL bDelAll) { CFileFind FileFinder; strDirPath = strDirPath + _T("\\"); CString strFilePath = strDirPath + strFileName; while (TRUE) { if (FileFinder.FindFile(strFilePat...

Ⅵ MFC我怎么才能用当前时间作为新建文件夹的名称

应该是你的路径写法不正确造成的,是不是没有注意'\'的写法,在C++里要表示'\'就要写成'\\'。
比如表示"C:\1\2.txt",就应该写成"C:\\1\\2.txt"

可以用SHFileOperation这个API函数
下面的例子将“C:\1”目录下的所有文件(包括文件夹)拷贝到“C:\2”目录中(C:\2可以不存在):
SHFILEOPSTRUCT shFileOp = {0};
shFileOp.hwnd = NULL;
shFileOp.wFunc = FO_COPY;
shFileOp.pFrom = "C:\\1";
shFileOp.pTo = "C:\\2";
::SHFileOperation(&shFileOp);

注意:shFileOp.pFrom和shFileOp.pTo要使用全路径,可以使用通配符,如:
shFileOp.pFrom = "C:\\1\\*.txt";
其他不变,则将拷贝所有的TXT文档。

*********************************************

网上邻居里好像不能新建文件夹吧?它不能算作文件夹。

要将CEdit里的内容写入TXT文件:
按住CTRL,双击Edit控件,在弹出的对话框中设置一个CString变量与控件关联。
以后调用Updatedata()就可以得到Edit中的内容了。
比如,Edit与m_strText关联,则代码如下:
void CFileManipulateDlg::Onbackup()
{
//获得当前时间并格式化为字符串
CString strTime = CTime::GetCurrentTime().Format("%Y-%m-%d");
//路径,我用的根目录是"c:",你可以根据自己需要修改,
//如果就是程序当前的目录,则用相对路径,直接写文件夹的名称
CString strPath = "C:\\" + strTime;
//建立文件夹
CreateDirectory(strPath, NULL);
//txt文件路径,TXT文档名为backup.txt
CString strTxtPath = strPath + "\\backup.txt";
//新建一个空的txt文档
CFile txtfile(strTxtPath, CFile::modeCreate | CFile::modeWrite);

//后面可对TXT文档进行写操作,参见CFile类
//调用完后UpdateData(),m_strText的值就会变成Edit框中的内容了
UpdateData();
//CString strTxt = "Hello,world!";
//将Edit中的内容写入Txt文档
txtfile.Write((LPCTSTR)m_strText, m_strText.GetLength());

//最后关闭Txt文档
txtfile.Close();
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:713
制作脚本网站 发布:2025-10-20 08:17:34 浏览:975
python中的init方法 发布:2025-10-20 08:17:33 浏览:686
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:837
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:745
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1085
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:314
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:194
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:882
python股票数据获取 发布:2025-10-20 07:39:44 浏览:840