Visual C++實現檔案間批次轉換功能 (轉)
唐翊國
一、前言
本人在開發惠普色譜工作站增強的過程中,實現了把指定目錄下的色譜資料檔案全部轉換成純文字檔案的功能。下面,透過用一個具體的例子來說明此功能的實現方法。
全部程式碼用Visual C++6.0在95/98/2000下編譯透過。
二、例項
首先用MFC AppWizard生成一個SDI風格的應用test,生成過程中全部使用預設設定。
其次,利用資源編輯器,在主選單“檔案”下增加一個選單項“轉換”,屬性為:
ID:ID_CONVERT
Caption: 轉換
Prompt: 在不同格式檔案之間進行轉換n轉換檔案
然後用“CTRL-W”熱鍵啟用MFC ClassWizard,為CmainFrame類增加響應ID_CONVERT訊息的命令OnConvert()。加入轉換功能的程式碼如下所示:
void CMainFrame::OnConvert()
{
LPMALLOC pMalloc;//利用擴充套件功能
BROWSEINFO bi;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))//為生成目錄選擇對話方塊分配自由
{
ZeroMemory(&bi,sizeof(bi));//清零分配的空間
char pszDirName[MAX_PATH];//存放選擇的目錄名
LPITEMIDLIST pidl;
bi.hwndOwner = GetSafeHwnd();
bi.pidl = NULL;
bi.pszDisplayName = pszDirName;
bi.lpszTitle = _T("選擇要批次轉換檔案所在的目錄");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)//選擇目錄對話方塊
{
if (::SHGetPathFromIDList(pidl, pszDirName))//獲得所選擇的目錄
{
file://設定選擇的目錄為當前目錄,以便查詢
SetCurrentDirectory(pszDirName);
file://定義一個查詢
CFileFind findch1;
CString strconv;
CString strsour;
if(findch1.FindFile("*.CH1"))//在當前目錄進行查詢
{
CFile File;
CStdioFile TargetFile;
BOOL bfindresult;
do
{
file://查詢下一個符合條件的檔案
bfindresult= findch1.FindNextFile();
file://獲得查詢到的檔名
strsour=findch1.GetFilePath();
strconv=strsour;
file://把檔名轉換為小寫
strconv.MakeLower();
file://把*.ch1型別的檔案轉換為*.txt
strconv.Replace(".ch1",".txt");
file://開啟*.ch1型別的檔案作為原始檔
SourceFile.Open(strsour,CFile::modeRead);
file://開啟*.txt型別的檔案作為目標檔案
TargetFile.Open(strconv,CFile::modeCreate|CFile::modeWrite);
file://此處呼叫*.ch1型別的檔案的解碼函式
file://此處呼叫轉換成文字檔案的函式
file://檔案使用完畢,要關閉
SourceFile.Close();
TargetFile.Close();
}while(bfindresult);
MessageBox("轉換完畢!","轉換完畢!",MB_OK);
}
else
{
MessageBox("沒找到CH1檔案","沒找到",MB_OK);
}
findch1.Close();//關閉這個搜尋
}
pMalloc->Free(pidl);//釋放使用完的資源
}
pMalloc->Release();//釋放使用完的資源
}
}
編譯並執行程式,選擇“檔案”選單下的“轉換”命令, 選擇一個目錄就完成了對此目錄下所有具有.ch1副檔名的檔案的轉換工作。
三、結論
本程式利用了Windows95/98/2000下的shell擴充套件功能,實現了對一個指定目錄的拾取,再利用MFC的CfileFind類,來檢索出所有想要轉換的原始檔,最後透過編碼轉換把原始檔內容輸出到指定型別的目標檔案。這個方法也適合於要大量在不同格式的檔案之間進行轉換的工作,如圖形檔案、檔案等的轉換。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用UiBot實現批次html轉換成PDF檔案UIHTML
- iWork Converter for Mac(iWork檔案批次轉換工具)Mac
- md檔案批次轉htmlHTML
- Python實現批次將ppt轉換為pdfPython
- c++時間形式轉換C++
- Json檔案轉換為Excel檔案!涉及讀檔案,時間戳轉化,寫文件JSONExcel時間戳
- vscode如何將所有檔案格式lf批次轉換為crlfVSCode
- JPG轉PDF如何實現?圖片批次轉換PDF的快捷方法
- PDF批次轉換器,批次轉word為pdf,批次轉ppt為pdf
- C++實現進位制轉換工具C++
- 批次目錄檔名大小寫轉換器
- PDF檔案轉換為DWF檔案
- 教程:如何通過DLA實現資料檔案格式轉換
- 用Aspose-Java免費實現 PDF、Word、Excel、Word互相轉換並將轉換過得檔案上傳OSS,返回轉換後的檔案路徑JavaExcel
- aspose word轉換pdf檔案後將pdf檔案轉換為圖片png
- 把 .xyz 檔案轉換成 .ply 檔案
- plist檔案格式轉換器
- heic檔案如何轉換jpg?
- C++實現任意進位制的相互轉換C++
- 如何在 Unix 和 DOS 格式之間轉換文字檔案
- caj檔案怎麼轉換成word文件,簡單的檔案格式轉換教程
- 如何將.ipynb檔案轉換為.py檔案
- Mxnet模型檔案轉換為Pb模型檔案模型
- Cisdem PDFMaster for MacPDF批次轉換工具ASTMac
- RTF 批量轉換為 DOCX 檔案
- 使用 Fstransform 轉換檔案系統ORM
- Torrent檔案的解析與轉換
- 轉換Linux 檔案編碼方式Linux
- java 字串與檔案相互轉換Java字串
- golang實現檔案上傳並轉存資料庫功能詳解Golang資料庫
- 時間轉換
- ofd檔案如何轉換成pdf格式 電腦上ofd檔案如何轉換成pdf格式
- 檢測檔案編碼,轉換檔案編碼
- .net core遷移實踐:專案檔案csproj的轉換
- 將bmp檔案轉換成JPEG(待修改,目前可轉換但圖片倒轉)
- 自己動手做一個批次doc轉換為docx檔案的小工具
- c++中字元、字串和數字間的轉換C++字元字串
- ofd檔案如何轉換成pdf格式 電腦ofd檔案如何免費轉換為pdf格式
- Java 檔案換行符識別與轉換Java