亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? filemisc.cpp

?? 這是一款zip壓縮與解壓縮的編碼,可以通過調用里面壓縮函數和解壓縮函數對相應的文件與文件夾進行壓縮與解壓縮功能的操作
?? CPP
字號:
#include "stdafx.h"
#include "filemisc.h"
//#include "timemisc.h"

#include <sys/utime.h>
#include <sys/stat.h>
#include <direct.h>

///////////////////////////////////////////////////////////////////////////////////////////////////
// private helpers
void ProcessMsgLoop()
{
	MSG msg;

	while (::PeekMessage((LPMSG) &msg, NULL, 0, 0, PM_REMOVE))
	{
		if (IsDialogMessage(msg.hwnd, (LPMSG)&msg))
		{
			// do nothing - its already been done
		}
		else
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
}

void TerminatePath(CString& sPath)
{
	sPath.TrimRight();

	if (sPath.ReverseFind('\\') != (sPath.GetLength() - 1))
		sPath += '\\';
}

void UnterminatePath(CString& sPath)
{
	sPath.TrimRight();

	int len = sPath.GetLength();

	if (sPath.ReverseFind('\\') == (len - 1))
		sPath = sPath.Left(len - 1);
}

///////////////////////////////////////////////////////////////////////////////////////////////////

time_t GetLastModified(const char* szPath)
{
	struct _stat st;

	if (_stat(szPath, &st) != 0)
		return 0;

	// files only
	if ((st.st_mode & _S_IFDIR) == _S_IFDIR)
		return 0;

	return st.st_mtime;
}

bool GetLastModified(const char* szPath, SYSTEMTIME& sysTime, bool bLocalTime)
{
	ZeroMemory(&sysTime, sizeof(SYSTEMTIME));

	DWORD dwAttr = ::GetFileAttributes(szPath);

	// files only
	if (dwAttr == 0xFFFFFFFF)
		return false;

	WIN32_FIND_DATA findFileData;
	HANDLE hFind = FindFirstFile((LPTSTR)szPath, &findFileData);

	if (hFind == INVALID_HANDLE_VALUE)
		return FALSE;

	FindClose(hFind);

	FILETIME ft = findFileData.ftLastWriteTime;

	if (bLocalTime)
		FileTimeToLocalFileTime(&findFileData.ftLastWriteTime, &ft);

	FileTimeToSystemTime(&ft, &sysTime);
	return true;
}

bool ResetLastModified(const char* szPath)
{
	::SetFileAttributes(szPath, FILE_ATTRIBUTE_NORMAL);

	return (_utime(szPath, NULL) == 0);
}

bool DeleteFolderContents(const char* szFolder, BOOL bIncludeSubFolders, const char* szFileMask, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	// if the dir does not exists just return
	DWORD dwAttr = GetFileAttributes(szFolder);

	if (dwAttr == 0xffffffff || !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
		return false;

	// if a file mask has been specified with subfolders we need to do 2 passes on each folder, 
	// one for the files and one for the sub folders
	int nPasses = (bIncludeSubFolders && (szFileMask && lstrlen(szFileMask))) ? 2 : 1;
		
	bool bResult = true;
	bool bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);

	for (int nPass = 0; !bStopped && nPass < nPasses; nPass++)
	{
		CString sSearchSpec(szFolder), sMask(szFileMask);

		if (sMask.IsEmpty() || nPass == 1) // (nPass == 1) == 2nd pass (for folders)
			sMask = "*.*";

		TerminatePath(sSearchSpec);
		sSearchSpec += sMask;

		WIN32_FIND_DATA finfo;
		HANDLE hSearch = NULL;

		if ((hSearch = FindFirstFile(sSearchSpec, &finfo)) != INVALID_HANDLE_VALUE) 
		{
			do 
			{
				if (bProcessMsgLoop)
					ProcessMsgLoop();

				if (finfo.cFileName[0] != '.') 
				{
					CString sItem(szFolder);
					sItem += "\\";
					sItem += finfo.cFileName;

					if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
					{
						if (bIncludeSubFolders && (nPass == 1 || nPasses == 1))
						{
							if (DeleteFolderContents(sItem, TRUE, szFileMask, hTerminate, bProcessMsgLoop))
							{
								if (!szFileMask || !lstrlen(szFileMask))
									bResult = (RemoveDirectory(sItem) == TRUE);
							}
						}
					}
					else 
						bResult = (DeleteFile(sItem) == TRUE);
				}

				bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
			} 
			while (!bStopped && bResult && FindNextFile(hSearch, &finfo));
			
			FindClose(hSearch);
		}
	}

	return (!bStopped && bResult);
}

bool RemoveFolder(const char* szFolder, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	// if the dir does not exists just return
	DWORD dwAttr = GetFileAttributes(szFolder);

	if (dwAttr == 0xffffffff || !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
		return true;

	if (DeleteFolderContents(szFolder, TRUE, NULL, hTerminate, bProcessMsgLoop))
	{
		::SetFileAttributes(szFolder, FILE_ATTRIBUTE_NORMAL);
		return (RemoveDirectory(szFolder) == TRUE);
	}

	return false;
}

double GetFolderSize(const char* szFolder, BOOL bIncludeSubFolders, const char* szFileMask, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	// if the dir does not exists just return
	DWORD dwAttr = GetFileAttributes(szFolder);

	if (dwAttr == 0xffffffff || !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
		return 0;
	
	double dSize = 0;

	WIN32_FIND_DATA finfo;
	CString sSearchSpec(szFolder), sFileMask(szFileMask);

	if (sFileMask.IsEmpty())
		sFileMask = "*.*";

	TerminatePath(sSearchSpec);
	sSearchSpec += sFileMask;

	BOOL bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
	HANDLE h = NULL;
		
	if (!bStopped && (h = FindFirstFile(sSearchSpec, &finfo)) != INVALID_HANDLE_VALUE) 
	{
		do 
		{
			if (bProcessMsgLoop)
				ProcessMsgLoop();

			if (finfo.cFileName[0] != '.') 
			{
				if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
				{
					if (bIncludeSubFolders)
					{
						CString sSubFolder(szFolder);
						sSubFolder += "\\";
						sSubFolder += finfo.cFileName;
						
						dSize += GetFolderSize(sSubFolder, TRUE, sFileMask, hTerminate, bProcessMsgLoop);
					}
				}
				else 
					dSize += (finfo.nFileSizeHigh * ((double)MAXDWORD + 1)) + finfo.nFileSizeLow;
			}

			bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
		}
		while (!bStopped && FindNextFile(h, &finfo));
		
		FindClose(h);
	} 

	return bStopped ? -1 : dSize;
}

bool CreateFolder(const char* szFolder)
{
	// start from the highest level folder working to the lowest
	CString sFolder, sRemaining(szFolder);
	UnterminatePath(sRemaining);

	bool bDone = false;
	bool bResult = true;

	// pull off the :\ or \\ start
	int nFind = sRemaining.Find(":\\");

	if (nFind != -1)
	{
		sFolder += sRemaining.Left(nFind + 2);
		sRemaining = sRemaining.Mid(nFind + 2);
	}
	else
	{
		nFind = sRemaining.Find("\\\\");
		
		if (nFind != -1)
		{
			sFolder += sRemaining.Left(nFind + 2);
			sRemaining = sRemaining.Mid(nFind + 2);
		}
	}

	while (!bDone && bResult)
	{
		nFind = sRemaining.Find('\\', 1);

		if (nFind == -1)
		{
			bDone = TRUE;
			sFolder += sRemaining;
		}
		else
		{
			sFolder += sRemaining.Left(nFind);
			sRemaining = sRemaining.Mid(nFind);
		}

		if (GetFileAttributes(sFolder) == 0xffffffff && mkdir(sFolder) != 0)
			bResult = false;
	}

	return bResult;
}

bool MoveFolder(const char* szSrcFolder, const char* szDestFolder, BOOL bIncludeSubFolders, const char* szFileMask, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	if (CopyFolder(szSrcFolder, szDestFolder, bIncludeSubFolders, szFileMask, hTerminate, bProcessMsgLoop))
	{
		// don't pass on hTerminate to ensure the operation completes
		DeleteFolderContents(szSrcFolder, bIncludeSubFolders, szFileMask, NULL, bProcessMsgLoop);

		return true;
	}

	return false;
}

bool CopyFolder(const char* szSrcFolder, const char* szDestFolder, BOOL bIncludeSubFolders, const char* szFileMask, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	if (!CreateFolder(szDestFolder))
		return false;

	if (GetFileAttributes(szSrcFolder) == 0xffffffff)
		return false;

	// if a file mask has been specified with subfolders we need to do 2 passes on each folder, 
	// one for the files and one for the sub folders
	int nPasses = (bIncludeSubFolders && (szFileMask && lstrlen(szFileMask))) ? 2 : 1;
		
	bool bResult = true;
	bool bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);

	for (int nPass = 0; !bStopped && nPass < nPasses; nPass++)
	{
		CString sSearchSpec(szSrcFolder), sMask(szFileMask);

		if (sMask.IsEmpty() || nPass == 1) // (nPass == 1) == 2nd pass (for folders)
			sMask = "*.*";

		TerminatePath(sSearchSpec);
		sSearchSpec += sMask;

		WIN32_FIND_DATA finfo;
		HANDLE hSearch = NULL;

		if ((hSearch = FindFirstFile(sSearchSpec, &finfo)) != INVALID_HANDLE_VALUE) 
		{
			do 
			{
				if (bProcessMsgLoop)
					ProcessMsgLoop();

				if (finfo.cFileName[0] != '.') 
				{
					CString sSource(szSrcFolder);
					sSource += "\\";
					sSource += finfo.cFileName;
					
					CString sDest(szDestFolder);
					sDest += "\\";
					sDest += finfo.cFileName;
					
					if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
					{
						if ((nPass == 1 || nPasses == 1) && bIncludeSubFolders)
							bResult = CopyFolder(sSource, sDest, hTerminate);
					}
					else if (nPass == 0) // files 
					{
						bResult = (TRUE == CopyFile(sSource, sDest, FALSE));
					}
				}

				bStopped = (WaitForSingleObject(hTerminate, 0) == WAIT_OBJECT_0);
			}
			while (!bStopped && bResult && FindNextFile(hSearch, &finfo));
			
			FindClose(hSearch);
		} 
	}

	return (!bStopped && bResult);
}

bool MoveFolder(const char* szSrcFolder, const char* szDestFolder, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	return MoveFolder(szSrcFolder, szDestFolder, TRUE, NULL, hTerminate, bProcessMsgLoop);
}

bool CopyFolder(const char* szSrcFolder, const char* szDestFolder, HANDLE hTerminate, BOOL bProcessMsgLoop)
{
	return CopyFolder(szSrcFolder, szDestFolder, TRUE, NULL, hTerminate, bProcessMsgLoop);
}

double GetFileSize(const char* szPath)
{
	HANDLE hFile = ::CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	
	if (hFile != INVALID_HANDLE_VALUE)
	{
		DWORD dwHighSize = 0;
		DWORD dwLowSize = ::GetFileSize(hFile, &dwHighSize);
		
		::CloseHandle(hFile);
		
		if (dwLowSize != INVALID_FILE_SIZE)
		{
			return (dwHighSize * ((double)MAXDWORD + 1) + dwLowSize);
		}
	}

	// else
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区鲁丝不卡| 最新日韩在线视频| 欧美日韩国产精品成人| 一本大道av一区二区在线播放 | 欧美日韩综合在线| 91黄色免费版| 色乱码一区二区三区88| 欧美在线播放高清精品| 欧美私人免费视频| 91精品国产综合久久久久久 | 欧美一区二区精品在线| 3atv一区二区三区| 欧美成人艳星乳罩| 国产日韩欧美高清在线| 国产精品久久一级| 亚洲老司机在线| 亚洲大片在线观看| 日韩电影在线一区| 国产一区999| 成人av资源网站| 91久久精品网| 欧美高清视频一二三区| 精品国产乱子伦一区| 国产欧美精品一区aⅴ影院| 日韩美女精品在线| 亚洲国产视频一区二区| 奇米一区二区三区| 国产91色综合久久免费分享| 91免费视频大全| 5858s免费视频成人| 国产清纯美女被跳蛋高潮一区二区久久w| 久久久久久久久久久99999| 成人欧美一区二区三区黑人麻豆| 亚洲国产精品久久人人爱| 狠狠色丁香久久婷婷综| 成人黄色大片在线观看| 9191久久久久久久久久久| 2023国产精华国产精品| 亚洲曰韩产成在线| 国产一区二区三区四区五区入口| 91免费版在线| 久久久精品黄色| 成人欧美一区二区三区小说| 青青草原综合久久大伊人精品| 成人污视频在线观看| 在线播放欧美女士性生活| 国产精品麻豆网站| 激情偷乱视频一区二区三区| 欧美性受极品xxxx喷水| 久久久久久久久蜜桃| 日韩电影一二三区| 欧美在线一区二区三区| 国产亚洲精品精华液| 午夜视频一区二区| a级高清视频欧美日韩| 久久看人人爽人人| 日韩在线一二三区| 欧美性猛片aaaaaaa做受| 欧美激情中文不卡| 精品无码三级在线观看视频| 欧美午夜精品免费| 综合久久一区二区三区| 国产99精品在线观看| 精品国产乱码91久久久久久网站| 亚洲成av人片在线| 91丝袜呻吟高潮美腿白嫩在线观看| 精品国产a毛片| 麻豆一区二区三| 日韩一区二区免费电影| 亚洲成av人片一区二区| 在线国产亚洲欧美| 亚洲激情图片一区| 91女神在线视频| 免费在线观看日韩欧美| 欧美精品123区| 午夜电影久久久| 欧美日韩国产成人在线91| 亚洲一区二区三区影院| 欧美伊人久久大香线蕉综合69| 亚洲美女在线一区| 91麻豆精东视频| 亚洲精品五月天| 在线观看免费成人| 天天影视涩香欲综合网| 91精品国产91久久久久久最新毛片| 午夜久久久久久久久久一区二区| 欧美日本在线播放| 奇米影视7777精品一区二区| 精品国产露脸精彩对白| 国产久卡久卡久卡久卡视频精品| 2021国产精品久久精品| 成人听书哪个软件好| 亚洲美女免费视频| 欧美久久久久久久久久| 久久精品国产亚洲a| 久久精品亚洲乱码伦伦中文 | 欧美在线免费观看亚洲| 亚洲精品日韩专区silk| 欧美精品一二三| 国产在线不卡一区| 亚洲欧美偷拍另类a∨色屁股| 欧美三级视频在线播放| 麻豆精品新av中文字幕| 中文字幕中文在线不卡住| 欧美在线免费观看亚洲| 久久99精品国产麻豆婷婷洗澡| 国产亚洲欧美中文| 在线观看一区不卡| 国产最新精品精品你懂的| 亚洲精品视频免费看| 91精品国产全国免费观看| 国产成人在线影院| 亚洲第一成人在线| 精品国产成人系列| 精品视频色一区| 国产成人精品亚洲午夜麻豆| 亚洲一区在线观看视频| 久久在线免费观看| 欧美三级电影一区| 成人黄色免费短视频| 日韩高清在线观看| 亚洲精品日日夜夜| 久久久久国产一区二区三区四区| 在线观看区一区二| 国产成人啪免费观看软件| 偷拍亚洲欧洲综合| 成人免费在线播放视频| 久久久午夜精品理论片中文字幕| 欧美三级三级三级爽爽爽| 成人国产精品免费网站| 精品一区二区日韩| 五月天欧美精品| 亚洲免费观看高清完整版在线观看熊| 久久综合色一综合色88| 欧美日韩精品专区| 欧美在线三级电影| 色综合亚洲欧洲| 国产.精品.日韩.另类.中文.在线.播放| 亚洲国产一区二区三区 | 色婷婷av一区二区三区软件 | 成人av电影免费观看| 精品一区二区日韩| 蜜臀精品久久久久久蜜臀| 亚洲午夜日本在线观看| 亚洲一区二区在线免费观看视频 | 亚洲国产精品自拍| 亚洲理论在线观看| 一区二区三区精品在线| 亚洲一卡二卡三卡四卡无卡久久| 亚洲欧洲日产国产综合网| 国产精品伦理一区二区| 日本一区二区三区电影| 亚洲国产岛国毛片在线| 国产午夜精品美女毛片视频| 国产日韩欧美电影| 国产精品久久久久久久久果冻传媒| 国产亚洲短视频| 亚洲欧洲性图库| 亚洲免费观看高清完整版在线 | 国产成人午夜99999| 国产成人综合精品三级| 豆国产96在线|亚洲| 成年人国产精品| 91免费版pro下载短视频| 欧美丝袜丝交足nylons| 欧美精品久久久久久久久老牛影院| 欧美日韩另类一区| 日韩精品一区二区三区在线播放| 日韩亚洲欧美成人一区| 2020国产精品| 日韩一区在线看| 日韩国产精品久久久| 激情久久五月天| eeuss鲁片一区二区三区 | 精品亚洲国内自在自线福利| 国产一区在线精品| 99在线精品视频| 91精品欧美综合在线观看最新| 精品少妇一区二区三区视频免付费| 久久婷婷色综合| 亚洲精品视频观看| 久久99精品久久久| 色综合色综合色综合| 日韩欧美一区二区视频| 国产日韩欧美综合在线| 亚洲成人久久影院| 国产成人精品在线看| 欧美日韩精品一区二区三区蜜桃| xfplay精品久久| 亚洲在线成人精品| 国产制服丝袜一区| 欧洲亚洲精品在线| 欧美激情综合在线| 午夜不卡av免费| 99精品黄色片免费大全| 欧美一级理论性理论a| 亚洲三级小视频| 国内精品第一页| 欧美理论片在线| 中文字幕亚洲不卡|