最近写一个小程序,中间用到了一些对文件的相关操作,特记下来:
// 判断文件或目录是否存在
// 存在返回TRUE,反正返回FALSE
BOOL IsFileExist(CString csFilePath)
{
CFileFind find;
if(!find.FindFile(csFilePath)) return FALSE;
find.Close();
return TRUE;
}
// 获取文件的后缀名(全小写)
CString GetFileExt(CString csFileName)
{
CString csFileExt=csFileName.Right(csFileName.GetLength()-csFileName.ReverseFind(.));
csFileExt.MakeLower();
return csFileExt;
}
// 获取文件的大小(字节)
DWORD GetFileSize(CString csFilePath)
{
WIN32_FIND_DATA wfd;
HANDLE handle=NULL;
memset(&wfd,0,sizeof(wfd));
handle=FindFirstFile(csFilePath.GetBuffer(0),&wfd);
if(handle==INVALID_HANDLE_VALUE) return 0;
FindClose(handle);
return wfd.nFileSizeLow;
}
// 判断一个路径是文件还是目录
// 如果是文件则返回TEUE,否则返回FALSE
BOOL IsFile(CString csFilePath)
{
WIN32_FIND_DATA wfd;
HANDLE handle=NULL;
memset(&wfd,0,sizeof(wfd));
handle=FindFirstFile(csFilePath.GetBuffer(0),&wfd);
if(handle==INVALID_HANDLE_VALUE) return FALSE;
FindClose(handle);
if (FILE_ATTRIBUTE_DIRECTORY & wfd.dwFileAttributes)
return FALSE;
else
return TRUE;
}
// 调出浏览目录窗口
CString BrowseFolder()
{
char cDir[MAX_PATH]={0};
CString csFolderPath="";
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = cDir;
bi.lpszTitle = "浏览文件夹";
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_DONTGOBELOWDOMAIN;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL) return csFolderPath;
SHGetPathFromIDList(pidl, cDir);
csFolderPath=cDir;
return csFolderPath;
}
// 目录复制
void NewMonitor::Copy_Dir(CString Source,CString Target)
{
char cFrom[MAX_PATH]={0};
char cDest[MAX_PATH]={0};
CString csFrom=Source + "*.*";
CString csDest=Target.Left(Target.GetLength()-1);
strncpy(cFrom,csFrom.GetBuffer(0),min(csFrom.GetLength(),MAX_PATH));
strncpy(cDest,csDest.GetBuffer(0),min(csDest.GetLength(),MAX_PATH));
SHFILEOPSTRUCT lpFileOp;
lpFileOp.hwnd=AfxGetMainWnd()->GetSafeHwnd();
lpFileOp.wFunc=FO_COPY;
lpFileOp.pFrom=cFrom;
lpFileOp.pTo=cDest;
lpFileOp.fFlags=FOF_SIMPLEPROGRESS;
lpFileOp.fAnyOperationsAborted=FALSE;
lpFileOp.hNameMappings =NULL;
lpFileOp.lpszProgressTitle =NULL;
SHFileOperation(&lpFileOp);
}
// 遍历指定目录下的所有文件
CFileFind finder;
BOOL bWorking = finder.FindFile(要遍历的目录+"\*.*");
while(bWorking)
{
bWorking = finder.FindNextFile();
if(!finder.IsDirectory()) // 如果不是目录
{
// 处理
}
}
// 创建目录
// 使用一个Win32 Api即可
::CreateDirectory(szDirPath,NULL);
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢