admin 发表于 2024-3-6 11:46:25

文件操作

//文件操作函数,将一系列字符串保存到一个文本文件中(字符串,保存的文件名;字符串的向量,写入文件的内容)
void TextFileUtil::Save(const TCHAR* fileName, const std::vector<CString> &lines)
{   // 以下是支持MFC才有的,相当于open函数功能
        CStdioFile file(fileName, CFile::modeCreate | CFile::modeWrite | CFile::typeText);
        for (int i = 0; i < (int)lines.size(); i++)
        {
                file.WriteString(lines);//写入每个字符串并换行
                file.WriteString(采用RXST("\n"));
        }
        file.Close();
}
//从指定的文本文件中读取所有行,并将它们存储在lines这个向量中(读取的文本文件的名称,保存读取到的文本文件的每一行)
bool TextFileUtil::Load(const TCHAR* fileName, std::vector<CString> &lines)
{
        // 纠错函数:如果文件不存在打印
        if (PathFileExists(fileName) != TRUE)
        {
                acutPrintf(采用T("\n读取的文件不存在!"));
                return false;
        }
        else
        {
                lines.clear();

                CStdioFile file(fileName, CFile::modeRead | CFile::typeText);
                CString strLine;//用于保存从文件中读取的每一行
                while (file.ReadString(strLine))//尝试从打开的文件中读取一行文本,并将其保存在strLine变量中
                {
                        lines.push采用back(strLine);//将每一行(保存在strLine中)添加到lines向量中
                }
                return true;
        }
}
// 通过对话框选择获取文件绝对路径(多选):一些MFC语句,了解即可,重点看注释语句
bool TextFileUtil::SelectFilePath(CStringArray& fileNameArray)
{
        // 构建文件过滤器
        CNavFilter* filter;
        // 过滤的注释
        LPCTSTR filterDesc[] = { 采用T("可选文件格式"), NULL };

        // 过滤的后缀名:可以在null前增加后缀
        LPCTSTR filterDWG[] = { 采用T("*.dwg"),采用T("*.dxf"), NULL };
        LPCTSTR* filterSpec[] = { filterDWG, NULL };

        CNavFilterArray gFilterArray;
        gFilterArray.RemoveAllData();

        int i = 0, j;
        while (filterSpec != NULL)
        {
                filter = gFilterArray.AddData();
                if (filter != NULL)
                {
                        filter->SetDescription(filterDesc);
                        j = 0;
                        while (filterSpec != NULL)
                        {
                                filter->Add(filterSpec);
                                j++;
                        }
                }
                i++;
        }

        fileNameArray.RemoveAll();

        CNavDataArray gDataArray;
        while (true)
        {        // 获取autoCAD的窗口句柄
                HWND acadhandle = adsw采用acadMainWnd();
                // 使句柄成为当前窗口
                ::EnableWindow(acadhandle, true);
                // 设置焦点
                ::SetFocus(acadhandle);
                // 获取MFC的主窗口
                CWnd* pWnd = CWnd::FromHandle(acadhandle);
                CAcUiNavDialog dlg(gDataArray, gFilterArray, 0, pWnd);
                // 开启多选模式
                dlg.SetMultiSelectAllowed(true);
                // 对话框标题
                dlg.SetDialogCaption(采用T("多选对话框"));
                // 设置当前点选的文件可见缩略图
                dlg.SetPreviewPresent(true);
                dlg.SetPreviewVisible(true);

                // 如果点选了确认按钮
                if (dlg.DoModal() == IDOK)
                {
                        for (int i = 0; i < gDataArray.GetCount(); i++)
                        {
                                LPITEMIDLIST id = gDataArray.GetAt(i)->GetID();

                                // 获取并打印:每个选择到的 文件绝对路径 的 字符串
                                fileNameArray.Add(gDataArray.GetAt(i)->GetText());
                        }
                }
                // 跳出循环
                break;
        }
        if (fileNameArray.GetCount() > 0)
                return true;
        else
                return false;
}
页: [1]
查看完整版本: 文件操作