获取文件夹路径、在指定地点新建文件夹、在路径中加“\”函数。

1.获得动态设置的文件夹的路径。不包含文件名,代码如下:

char szSelected[MAX_PATH] = {0};
	char szSelected_m[MAX_PATH] = {0};
	LPITEMIDLIST pidl;
	BROWSEINFO    bi; 
	bi.hwndOwner = this->m_hWnd;  //窗口句柄
	bi.pidlRoot = NULL;     //文件夹根
	bi.pszDisplayName = szSelected; 
	bi.lpszTitle = "";     //窗口标题
	bi.ulFlags = BIF_RETURNONLYFSDIRS;  //对话框外观和功能
	bi.lpfn = NULL;     //事件回调函数
	bi.lParam = NULL;     //传给回调函数的参数
	bi.iImage = NULL;      //被选取的文件夹的图片索引
	
	if((pidl = SHBrowseForFolder(&bi)) != NULL)
	{
		if(SUCCEEDED(SHGetPathFromIDList(pidl, szSelected)))
		{
CString mm;
mm.Fomate(_T(szSelected));
MessageBox(mm);
}  
}

说明:1.此段都不用改,结果存放在字符串mm中。

效果如下图:




2.获得另存为设置的文件路径,包含文件名,代码如下:

// 设置过滤器   
	TCHAR szFilter[] = _T("所有文件(*.*)|*.*||");   
	// 构造打开文件对话框   
	CFileDialog fileDlg(FALSE, NULL, NULL, 0, szFilter, this);   
	CString strFilePath;   

	// 显示打开文件对话框   
	if (IDOK == fileDlg.DoModal())   
	{   
		// 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
		strFilePath = fileDlg.GetPathName();   
		MessageBox(strFilePath); 
	}   

说明:1. 路径存放在字符串strFilePath中。

            2.此段都不用更改。

            3.CFileDialog类的函数:

               GetFileExt():获得选定文件的后缀名。
               GetFileName():获得选定文件的名称,包括后缀名。
               GetFileTitle():获得选定文件的标题,即不包括后缀名。
               GetFolderPath():获得选定文件的目录。
               GetNextPathName():获得下一个选定的文件的路径全名。
               GetPathName():获得选定文件的路径全名。
               GetReadOnlyPref():获得是否“以只读方式打开”。
               GetStartPosition():获得文件名列表中的第一个元素的位置。

效果图如下:




3.在获得的路径中只有一个“\”(如D:\IMAGE),但写文件时需要两个“\\”(如 D:\\IMAGE)的解决。

  说明:在C语言中,“\”并无实际意义,windows的路径中的“\”是C语言中的“\\”,固我们需要给获得的字符串路径加一个“\”。

  代码如下:

  CString position_img_M;
 char szSelected_m[MAX_PATH] = {0};// MAX_PATH可任取,这里取260
int j = 0;
			for (int i=0;i<(sizeof(szSelected)/sizeof(szSelected[0]-1));i++)
			{
				if(szSelected[i]=='\\')
				{
					szSelected_m[j] = szSelected[i];
					j++;
					szSelected_m[j] = '\\';//这里的'\\',相当于实际加了一个'\'
					j++;
				}
				else
				{
				szSelected_m[j] = szSelected[i];
				j++;
				}
				
			}
			position_img_M.Format(_T(szSelected_m));

说明:更改后的结果存放在字符串position_img_M中。



4.在指定地点创建新文件夹。代码如下:


CString position_img_M1;
position_img_M1 = "D:\\image"
	if (!PathIsDirectory(position_img_M1))//不存在则创建,。
{
CreateDirectory(position_img_M1, 0);//不存在则创建
}
Else//或存在时可以略过,即去掉else语句。
{
MessageBox(_T(“该文件夹已存在”)); 
}

说明:1.此段代码只用更改position_img_M1的内容,即新建文件夹的路径和文件名。

            2. PathIsDirectory函数,用来判断路径是否存在,路径的一般格式E:\\**\\**,若是存在返回1,否则返回0。

            3. CreateDirectory函数,用来创建一个路径,接受两个参数,路径和安全属性,安全属性可选择0,若是创建成功则返回1,否则返回0;在创建时要保证当前路径下的每一级都是有效的,如路径若是E:\\S1\\S2\\S3,若是S1或S2不存在,则创建会失败;若是创建的文件夹存在,则CreateDirectory函数也不会在创建文件夹,也会返回0值,因而CreateDirectory函数在调用时只要没有创建文件夹,函数返回0。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值