Ejemplo n.º 1
0
/*刷新檔案*/
void CModel::OnBnClickedButton1()
{
	ModelCount = 0;
	//刪除所有列表
	m_ModelList.DeleteAllItems();
	//找到該exe目錄
	CString path;
	GetModuleFileName(NULL, path.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
	path.ReleaseBuffer();
	int pos = path.ReverseFind('\\');
	path = path.Left(pos) + _T("\\Temp\\");
	LPTSTR lpszText = new TCHAR[path.GetLength() + 1];
	lstrcpy(lpszText, path);
	//陣列清除
	AllModelName.clear();
	//搜尋檔案
	ListAllFileInDirectory(lpszText, TEXT("*_*_*_*_*.mod"));
}
Ejemplo n.º 2
0
/*搜尋檔案名*/
BOOL CModel::ListAllFileInDirectory(LPTSTR szPath, LPTSTR szName) {
	HANDLE hListFile;
	TCHAR szFilePath[MAX_PATH]; //檔案名 
	TCHAR szFullPath[MAX_PATH];	//檔案目錄 
	WIN32_FIND_DATA FindFileData;

	lstrcpy(szFilePath, szPath);
	lstrcat(szFilePath, szName);

	hListFile = FindFirstFile(szFilePath, &FindFileData);
	if (hListFile == INVALID_HANDLE_VALUE) {
		MessageBox(_T("無檔案"));
		return 1;
	}
	else {
		do {
			if (lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
				lstrcmp(FindFileData.cFileName, TEXT("..")) == 0)
				continue;
			wsprintf(szFullPath, L"%s\\%s", szPath, FindFileData.cFileName);//將szPath和FindFileData.cFileName 字串相加放到szFullPath裡 
			/*名稱陣列*/
			AllModelName.push_back(FindFileData.cFileName);
			/*列表顯示*/
			m_ModelList.InsertItem(ModelCount, NULL);
			CString StrBuff;
			(ModelCount>9) ? StrBuff.Format(_T("0%d"), ModelCount) : StrBuff.Format(_T("00%d"), ModelCount);
			m_ModelList.SetItemText(ModelCount, 0, StrBuff);
			m_ModelList.SetItemText(ModelCount, 1, AllModelName.at(ModelCount).Left(AllModelName.at(ModelCount).Find(_T("."))));
			/*檔案計數*/
			ModelCount++;

			if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {//如果目錄下還有目錄繼續往下尋找
																		   //printf("<DIR>");
				ListAllFileInDirectory(szFullPath, szName);
			}
		} while (FindNextFile(hListFile, &FindFileData));
	}
	return 0;
}
Ejemplo n.º 3
0
/********************************************
 *DWORD ListAllFileInDirectory(LPSTR szPath)
 * 功能: 遍历目录及所有子目录,打印路径
 * 参数: LPSTR szPath, 为将遍历的目录
 * 返回值:0 执行完成, 1 发生错误
 ********************************************/
DWORD ListAllFileInDirectory(LPSTR szPath2,int nTabs)
{
	CHAR szFilePath[MAX_PATH];
	WIN32_FIND_DATA FindFileData;
	HANDLE hListFile;

	CHAR szFullPath[MAX_PATH]; //完整路径 卷标+目录+文件名

	//构造代表子目录和文件的路径字符串 通配符*
	lstrcpy(szFilePath,szPath2);
	lstrcat(szFilePath,"\\*");

	//查找第一个文件目录,获得查找句柄
	hListFile=FindFirstFile(szFilePath,&FindFileData);
	if(hListFile==INVALID_HANDLE_VALUE)
	{
		printf("ERROR :%d",(int)GetLastError());
		return 1;
	}
	else
	{
		do
		{
			//过滤 .和.. 不需要遍历
			if(lstrcmp(FindFileData.cFileName,TEXT("."))==0 ||
					lstrcmp(FindFileData.cFileName,TEXT(".."))==0)
			{
				continue;
			}

			//构造成全路径
			wsprintf(szFullPath,"%s\\%s",
					szPath2,FindFileData.cFileName);

			//打印
			//若是文件就打印,若是目录就打印并递归到子目录
			if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
			{
				for(int i=1;i<nTabs;i++)
				{
					printf("%s",V_line); //输出一个 竖直线
				}
				printf("%s",B_line); //输出一个 水平线
				printf("%s\n",FindFileData.cFileName);
			}

			//若为目录则递归调用 列举下级目录
			if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
				for(int i=1;i<nTabs;i++)
				{
					printf("%s",V_line); //输出一个 竖直线
				}
				printf("%s",B_line);	//输出一个 水平线
				printf("%s\n",FindFileData.cFileName);

				ListAllFileInDirectory(szFullPath,nTabs+1);
			}
		}
		while(FindNextFile(hListFile,&FindFileData));
	}
	return 0;
}