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

来源:互联网 发布:robotmaster软件下载 编辑:程序博客网 时间:2024/05/18 17:57

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可任取,这里取260int 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。




0 0