當前位置:首頁 » 文件管理 » 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 瀏覽:976
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