学了几年的C#,最近刚刚接触MFC,真心觉得MFC很难,在C#一个很简单的获取文件大小,到MFC问题就很多.几百M的文件没有问题.如果是大文件,比如4G的MPG文件,,,获取的大小明显小于实际大小,,拷贝的时候也会报错..
CFileFind cff;
CString str;
if(cff.FindFile("e:\\李克勤.-.[2011年香港小交响乐团演奏厅演唱会].演唱会.(720P).mkv"))
{
cff.FindNextFile();
long len = cff.GetLength();
str.Format("%0.2lf",cff.GetLength64()/1024.0/1024.0/1024.0);
cff.Close();
MessageBox(str);
}
实际问题有9.4G,但是获取只有1.5G
使用GetLength() 和 GetLength64() 获取的值是一样的
用了FindFirstFile WIN32_FIND_DATA结构体,,获取 还是不对...
还有个问题,,比如有个字符串qw|er,我想吧这个字符串 已 "|" 分割为两个字符的数组,,C#里真是很简单,但是MFC查了很久的资料 都没有这样的函数,,不会 自己 写个循环吧??
CFileFind cff;
CString str;
if(cff.FindFile("e:\\李克勤.-.[2011年香港小交响乐团演奏厅演唱会].演唱会.(720P).mkv"))
{
cff.FindNextFile();
long len = cff.GetLength();
str.Format("%0.2lf",cff.GetLength64()/1024.0/1024.0/1024.0);
cff.Close();
MessageBox(str);
}
实际问题有9.4G,但是获取只有1.5G
使用GetLength() 和 GetLength64() 获取的值是一样的
用了FindFirstFile WIN32_FIND_DATA结构体,,获取 还是不对...
还有个问题,,比如有个字符串qw|er,我想吧这个字符串 已 "|" 分割为两个字符的数组,,C#里真是很简单,但是MFC查了很久的资料 都没有这样的函数,,不会 自己 写个循环吧??
你要大数需要用longlong
_wfopen_s(&this->m_fileSend,this->m_strFileName,_T("rb"));//m_strFileName是文件全路径名
if(this->m_fileSend) {//FILE *m_fileSend;int nFileSize_s;
nFileSize_s = _filelength(fileno(this->m_fileSend));
_itoa(nFileSize_s,&sendBuf[0x101],10);
}
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;nFileSizeHigh
The high-order DWORD value of the file size, in bytes.This value is zero (0) unless the file size is greater than MAXDWORD.The size of the file is equal to (nFileSizeHigh * (MAXDWORD+1)) + nFileSizeLow.