您的位置:首页 > 其它

MFC 文件及其属性相关操作 (MFC 文件操作 三)

2011-07-30 18:05 507 查看
一、 从路径中 提取扩展名

view plaincopy to clipboardprint?

CString path("C:/ForVcTest/diary.txt");
CString ext = path.Mid(path.ReverseFind('.')+1);
AfxMessageBox(ext);

view plaincopy to clipboardprint?

CString path("C:/ForVcTest/diary.txt");
CString name = path.Mid(path.ReverseFind('/')+1);
AfxMessageBox(name);

CString path("C:/ForVcTest/diary.txt");
CString name = path.Mid(path.ReverseFind('/')+1);
AfxMessageBox(name);


三、获取文件属性

view plaincopy to clipboardprint?

DWORD dwAttr = GetFileAttributes("C:/ForVcTest/2.txt");//获取文件的属性

if (dwAttr == FILE_ATTRIBUTE_ARCHIVE){
AfxMessageBox("FILE_ATTRIBUTE_ARCHIVE");
}

view plaincopy to clipboardprint?

SetFileAttributes("C:/ForVcTest/2.txt",FILE_ATTRIBUTE_READONLY);//|FILE_ATTRIBUTE_HIDDEN

SetFileAttributes("C:/ForVcTest/2.txt",FILE_ATTRIBUTE_READONLY);//|FILE_ATTRIBUTE_HIDDEN


五、获取当前程序所在路径

view plaincopy to clipboardprint?

//提取文件路径
char appName[_MAX_PATH];
GetModuleFileName(NULL,appName,_MAX_PATH);
CString szPath(appName);
AfxMessageBox(szPath);

view plaincopy to clipboardprint?

MoveFile("C:/ForVcTest/diary.txt","C:/ForVcTest/newCopy.txt");

MoveFile("C:/ForVcTest/diary.txt","C:/ForVcTest/newCopy.txt");


移动后 源文件被删除,目标文件被创建

七、Path Name Title 的区别

view plaincopy to clipboardprint?

CFile file("C:/ForVcTest/newCopy.txt",CFile::modeRead);

CString szPath = file.GetFilePath();
CString szName = file.GetFileName();
CString szTitle = file.GetFileTitle();

AfxMessageBox("szPath = "+szPath);
AfxMessageBox("szName = "+szName);
AfxMessageBox("szTitle = "+szTitle);

view plaincopy to clipboardprint?

bool SplitFile()
{
//文件分割
CFile m_File;
CString m_FileName,m_FileTitle,m_FilePath;
m_FilePath = "C://ForVcTest//newCopy.txt";
char pBuf[40];
if(m_File.Open(m_FilePath,CFile::modeRead | CFile::shareDenyWrite))
{
m_FileName=m_File.GetFileName();
m_FileTitle=m_File.GetFileTitle();
//      DWORD FileLength=m_File.GetLength();

//      DWORD PartLength=FileLength/2+FileLength%2;

int nCount=1;
CString strName;
CFile wrFile;
DWORD ReadBytes;
while(true)
{
ReadBytes=m_File.Read(pBuf,40);   //ReadBytes 实际读取的字节数

strName.Format("C://ForVcTest//%s%d.txt",m_FileTitle,nCount);
wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate);
wrFile.Write(pBuf,ReadBytes);
wrFile.Close();
if(ReadBytes<40) //实际读取的字节数 不足 分配的大小,则说明文件读完了

break;
nCount++;
}
m_File.Close();
}
else{
AfxMessageBox("不能打开文件");
return fasle;
}
return true;
}

bool SplitFile()
{
//文件分割
CFile m_File;
CString m_FileName,m_FileTitle,m_FilePath;
m_FilePath = "C://ForVcTest//newCopy.txt";
char pBuf[40];
if(m_File.Open(m_FilePath,CFile::modeRead | CFile::shareDenyWrite))
{
m_FileName=m_File.GetFileName();
m_FileTitle=m_File.GetFileTitle();
//		DWORD FileLength=m_File.GetLength();
//		DWORD PartLength=FileLength/2+FileLength%2;
int nCount=1;
CString strName;
CFile wrFile;
DWORD ReadBytes;
while(true)
{
ReadBytes=m_File.Read(pBuf,40);   //ReadBytes 实际读取的字节数
strName.Format("C://ForVcTest//%s%d.txt",m_FileTitle,nCount);
wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate);
wrFile.Write(pBuf,ReadBytes);
wrFile.Close();
if(ReadBytes<40) //实际读取的字节数 不足 分配的大小,则说明文件读完了
break;
nCount++;
}
m_File.Close();
}
else{
AfxMessageBox("不能打开文件");
return fasle;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: