win32api 文件编程
Here, we show some example code on Win32. The code are operations on file on Win32 OSes. The code here uses some MFC classes.
在这里,我们显示Win32上的一些示例代码。 该代码是Win32 OS上文件上的操作。 这里的代码使用一些MFC类。
Recursively show the files from a path:
递归显示路径中的文件 :
void Show(const char *folderPath)
{
CFileFind finder;
CString path(folderPath);
path += "*.*";
BOOL bWorking = finder.FindFile(path);
while (bWorking) {
bWorking = finder.FindNextFile();
cout << finder.GetFilePath() << endl;
}
finder.Close();
}
Recursively copy a folder:
递归复制文件夹:
bool CopyFolder(const char *srcFolderPath, const char *dstFolderPath)
{
CFileFind srcFinder, dstFinder;
CString src(srcFolderPath);
CString dst(dstFolderPath);
if (!CreateDirectory(dst.GetBuffer(), 0)) return false;
CFileFind finder;
BOOL bWorking = finder.FindFile(src + "*.*");
while (bWorking) {
bWorking = finder.FindNextFile();
if (finder.IsDots()) continue;
CString fileName = finder.GetFileName();
if (finder.IsDirectory()) {
if (!CopyFolder((src + "" + fileName).GetBuffer(), dst + "" + fileName)) {
finder.Close();
return false;
}
}
else {
if (!CopyFile(src + "" + fileName, dst + "" + fileName, 0)) {
finder.Close();
return false;
}
}
}
finder.Close();
return true;
}
Recursively delete a folder and the content in it:
递归删除文件夹及其中的内容:
bool DeleteFolder(const char *folderName)
{
CString path(folderName);
CFileFind finder;
BOOL bWorking = finder.FindFile(path + "*.*");
while (bWorking) {
bWorking = finder.FindNextFile();
if (finder.IsDots()) continue;
CString fileName = finder.GetFileName();
if (finder.IsDirectory()) {
if (!DeleteFolder((path + "" + fileName).GetBuffer())) {
finder.Close();
return false;
}
}
else {
if (!DeleteFile((path + "" + fileName).GetBuffer())) {
finder.Close();
return false;
}
}
}
finder.Close();
return RemoveDirectory(folderName);
}
翻译自: https://www.systutorials.com/win32-programming-operation-on-files/
win32api 文件编程