找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 132|回复: 0

文件操作

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-6 11:46:25 | 显示全部楼层 |阅读模式
  1. //文件操作函数,将一系列字符串保存到一个文本文件中(字符串,保存的文件名;字符串的向量,写入文件的内容)
  2. void TextFileUtil::Save(const TCHAR* fileName, const std::vector<CString> &lines)
  3. {   // 以下是支持MFC才有的,相当于open函数功能
  4.         CStdioFile file(fileName, CFile::modeCreate | CFile::modeWrite | CFile::typeText);
  5.         for (int i = 0; i < (int)lines.size(); i++)
  6.         {
  7.                 file.WriteString(lines[i]);//写入每个字符串并换行
  8.                 file.WriteString(采用RXST("\n"));
  9.         }
  10.         file.Close();
  11. }
  12. //从指定的文本文件中读取所有行,并将它们存储在lines这个向量中(读取的文本文件的名称,保存读取到的文本文件的每一行)
  13. bool TextFileUtil::Load(const TCHAR* fileName, std::vector<CString> &lines)
  14. {
  15.         // 纠错函数:如果文件不存在打印
  16.         if (PathFileExists(fileName) != TRUE)
  17.         {
  18.                 acutPrintf(采用T("\n读取的文件不存在!"));
  19.                 return false;
  20.         }
  21.         else
  22.         {
  23.                 lines.clear();
  24.                 CStdioFile file(fileName, CFile::modeRead | CFile::typeText);
  25.                 CString strLine;//用于保存从文件中读取的每一行
  26.                 while (file.ReadString(strLine))//尝试从打开的文件中读取一行文本,并将其保存在strLine变量中
  27.                 {
  28.                         lines.push采用back(strLine);//将每一行(保存在strLine中)添加到lines向量中
  29.                 }
  30.                 return true;
  31.         }
  32. }
  33. // 通过对话框选择获取文件绝对路径(多选):一些MFC语句,了解即可,重点看注释语句
  34. bool TextFileUtil::SelectFilePath(CStringArray& fileNameArray)
  35. {
  36.         // 构建文件过滤器
  37.         CNavFilter* filter;
  38.         // 过滤的注释
  39.         LPCTSTR filterDesc[] = { 采用T("可选文件格式"), NULL };
  40.         // 过滤的后缀名:可以在null前增加后缀
  41.         LPCTSTR filterDWG[] = { 采用T("*.dwg"),采用T("*.dxf"), NULL };
  42.         LPCTSTR* filterSpec[] = { filterDWG, NULL };
  43.         CNavFilterArray gFilterArray;
  44.         gFilterArray.RemoveAllData();
  45.         int i = 0, j;
  46.         while (filterSpec[i] != NULL)
  47.         {
  48.                 filter = gFilterArray.AddData();
  49.                 if (filter != NULL)
  50.                 {
  51.                         filter->SetDescription(filterDesc[i]);
  52.                         j = 0;
  53.                         while (filterSpec[i][j] != NULL)
  54.                         {
  55.                                 filter->Add(filterSpec[i][j]);
  56.                                 j++;
  57.                         }
  58.                 }
  59.                 i++;
  60.         }
  61.         fileNameArray.RemoveAll();
  62.         CNavDataArray gDataArray;
  63.         while (true)
  64.         {        // 获取autoCAD的窗口句柄
  65.                 HWND acadhandle = adsw采用acadMainWnd();
  66.                 // 使句柄成为当前窗口
  67.                 ::EnableWindow(acadhandle, true);
  68.                 // 设置焦点
  69.                 ::SetFocus(acadhandle);
  70.                 // 获取MFC的主窗口
  71.                 CWnd* pWnd = CWnd::FromHandle(acadhandle);
  72.                 CAcUiNavDialog dlg(gDataArray, gFilterArray, 0, pWnd);
  73.                 // 开启多选模式
  74.                 dlg.SetMultiSelectAllowed(true);
  75.                 // 对话框标题
  76.                 dlg.SetDialogCaption(采用T("多选对话框"));
  77.                 // 设置当前点选的文件可见缩略图
  78.                 dlg.SetPreviewPresent(true);
  79.                 dlg.SetPreviewVisible(true);
  80.                 // 如果点选了确认按钮
  81.                 if (dlg.DoModal() == IDOK)
  82.                 {
  83.                         for (int i = 0; i < gDataArray.GetCount(); i++)
  84.                         {
  85.                                 LPITEMIDLIST id = gDataArray.GetAt(i)->GetID();
  86.                                 // 获取并打印:每个选择到的 文件绝对路径 的 字符串
  87.                                 fileNameArray.Add(gDataArray.GetAt(i)->GetText());
  88.                         }
  89.                 }
  90.                 // 跳出循环
  91.                 break;
  92.         }
  93.         if (fileNameArray.GetCount() > 0)
  94.                 return true;
  95.         else
  96.                 return false;
  97. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 14:38 , Processed in 0.144499 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表