您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页C++文件操作

C++文件操作

来源:划驼旅游
SHGetSpecialFolderPath获取特殊目录

MFC文件操作大全

1.创建文件夹

CreateDirectory(%%1,NULL);

2.创建文件 CFile file;

file.Open(%%1,CFile::modeCreate|CFile::modeWrite);

3.删除文件

DeleteFile(%%1);

4.删除文件夹

RemoveDirectory(%%1);

5.删除一个目录下所有的文件夹 CFileFind finder;

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile(); if (finder.IsDirectory()) {

RemoveDirectory(finder.GetFilePath()); } }

6.清空文件夹

RemoveDirectory(%%1);

CreateDirectory(%%1,NULL);

7.读取文件

char sRead[1024];

CFile mFile(_T(%%1),CFile::modeRead); while (sRead!=null) {

mFile.Read(sRead,1024); CString %%2(sRead); %%3 }

 作者:无尾兽零号机  4位粉丝  2009-10-23 22:13  回复此发言

2 回复:MFC文件操作大全

8.写入文件

CFile mFile(_T(%%1), CFile::modeWrite|CFile::modeCreate); mFile.Write(%%2,sizeof(%%2)); mFile.Flush(); mFile.Close();

9.写入随机文件

char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH]; GetTempPath(_MAX_PATH, szTempPath);

GetTempFileName(szTempPath,_T (\"my_\"),0,szTempfile);

CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite); char m_char='a';

m_tempFile.Write(&m_char,2); m_tempFile.Close(); //循环写入多个值 strTempA; int i;

int nCount=6;

//共有6个文件名需要保存

for (i=0;i{strTemp.Format(\"%d\

strTempA=文件名;

//文件名可以从数组,列表框等处取得.

::WritePrivateProfileString(\"UseFileName\c://usefile//usefile.ini); }

strTemp.Format(\"%d\

::WritePrivateProfileString(\"FileCount\//将文件总数写入,以便读出. //读出

nCount=::GetPrivateProfileInt(\"FileCount\for(i=0;i{strTemp.Format(\"%d\strTemp=\"FileName\"+strTemp;

::GetPrivateProfileString(\"CurrentIni\//使用strTempA中的内容. }

10.读取文件属性

dwAttrs = GetFileAttributes(%%1);

if (dwAttrs & FILE_ATTRIBUTE_READONLY) { %%2 }

if (NORMAL & FILE_ATTRIBUTE_READONLY){ %%3 }

11.写入属性

SetFileAttributes(szNewPath,dwAttrs | FILE_ATTRIBUTE_READONLY);

12.枚举一个目录下所有文件夹 CFileFind finder;

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile(); if(finder.IsDirectory()){

CString %%1=finder.GetFilePath(); %%2 } }

13.复制文件夹

WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;

char szDirPath[] = %%2;

char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;

if (!CreateDirectory(szDirPath, NULL)) { //不能创建新的目录 return; }

hSearch = FindFirstFile(%%1+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) { return; }

while (!fFinished) {

 作者:无尾兽零号机  4位粉丝 

 2009-10-23 22:14  回复此发言

3 回复:MFC

文件操作大全

lstrcpy(szNewPath, szDirPath);

lstrcat(szNewPath, FileData.cFileName);

if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath,

dwAttrs | FILE_ATTRIBUTE_READONLY); } }

else { //不能复制文件 return; }

if (!FindNextFile(hSearch, &FileData)) {

if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; }

else {

//找不到下一个文件 return;

} } }

FindClose(hSearch);

14.复制一个目录下所有的文件夹到另一个文件夹下 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;

char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;

if (!CreateDirectory(szDirPath,NULL)) {

//不能创建新的目录 return; }

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile(); if(finder.IsDirectory()){

hSearch = FindFirstFile(finder.GetFilePath()+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) {

return; }

while (!fFinished) {

lstrcpy(szNewPath, szDirPath);

lstrcat(szNewPath, FileData.cFileName);

if (CopyFile(FileData.cFileName, szNewPath, FALSE)) {

dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) {

SetFileAttributes(szNewPath,

dwAttrs | FILE_ATTRIBUTE_READONLY); } } else {

//不能复制文件

return; }

if (!FindNextFile(hSearch, &FileData)) {

if (GetLastError() == ERROR_NO_MORE_FILES) {

//遍历文件夹完成 fFinished = TRUE; } else {

//找不到下一个文件 return; } } }

FindClose(hSearch); } }

15.移动文件夹

WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;

char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;

if (!CreateDirectory(szDirPath, NULL)) {

//不能创建新的目录 return; }

hSearch = FindFirstFile(%%1+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) {

return; }

while (!fFinished) {

lstrcpy(szNewPath, szDirPath);

lstrcat(szNewPath, FileData.cFileName);

if (CopyFile(FileData.cFileName, szNewPath, FALSE)) {

dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) {

SetFileAttributes(szNewPath,

dwAttrs | FILE_ATTRIBUTE_READONLY); } } else {

//不能复制文件 return; }

if (!FindNextFile(hSearch, &FileData)) {

if (GetLastError() == ERROR_NO_MORE_FILES) {

//遍历文件夹完成 fFinished = TRUE; } else {

//找不到下一个文件 return; } } }

FindClose(hSearch); RemoveDirectory(%%1);

 作者:无尾兽零号机  4位粉丝 

 2009-10-23 22:14  回复此发言

4 回复:MFC

文件操作大全

16.移动一个文件夹下所有的文件夹到另一个目录下 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;

char szDirPath[] = %%2;

char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;

if (!CreateDirectory(szDirPath,NULL)) {

//不能创建新的目录 return; }

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile(); if(finder.IsDirectory()){

hSearch = FindFirstFile(finder.GetFilePath()+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) {

return; }

while (!fFinished) {

lstrcpy(szNewPath, szDirPath);

lstrcat(szNewPath, FileData.cFileName);

if (CopyFile(FileData.cFileName, szNewPath, FALSE)) {

dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) {

SetFileAttributes(szNewPath,

dwAttrs | FILE_ATTRIBUTE_READONLY); } } else {

//不能复制文件 return; }

if (!FindNextFile(hSearch, &FileData)) {

if (GetLastError() == ERROR_NO_MORE_FILES) {

//遍历文件夹完成 fFinished = TRUE; } else

{

//找不到下一个文件 return; } } }

FindClose(hSearch);

RemoveDirectory(finder.GetFilePath().GetBuffer(0)); } }

17.以一个文件夹的框架在另一个目录创建文件夹和空文件 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;

char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;

if (!CreateDirectory(szDirPath, NULL)) {

//不能创建新的目录 return; }

hSearch = FindFirstFile(%%1+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) {

return; }

while (!fFinished) {

lstrcpy(szNewPath, szDirPath);

lstrcat(szNewPath, FileData.cFileName);

HANDLE hFile=CreateFileHandle hFile=CreateFile(szNewPath,GENERIC_READ,FILE_SHARE_REif(!hFile) {

//不能创建文件 return; }

if (!FindNextFile(hSearch, &FileData)) {

if (GetLastError() == ERROR_NO_MORE_FILES) {

//遍历文件夹完成

fFinished = TRUE; } else {

//找不到下一个文件 return; } } }

FindClose(hSearch);

18.复制文件

CopyFile(%%1,%%2,true);

 作者:无尾兽零号机  4位粉丝 

 2009-10-24 15:17  回复此发言

5 回复:MFC

文件操作大全

19.复制一个文件夹下所有的文件到另一个目录 //#include using std::string; char sep='/'; #ifdef _WIN32 sep='//'; #endif

CFileFind finder;

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile();

if(!finder.IsDirectory() || finder.IsDots()){ string s(finder.GetFileName()); CString sourcefile(%%1);

if(s.rfind(sep,s.length())!=string::npos) {

sourcefile=sourcefile+\"//\"+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i)); targetfile=%%2+\"//\"+targetfile/;

CopyFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); } } }

20.提取扩展名

CString path(%%1);

CString %%2=path.Mid(path.ReverseFind('.'));

21.提取文件名

CString path(%%1);

CString %%2=path.Mid(path.ReverseFind('//')+1);

22.提取文件路径

char appName[MAX_PATH];

GetModualFileName(NULL,appName,MAX_PATH);

 作者:无尾兽零号机  4位粉丝 

 2009-10-24 15:17  回复此发言

6 回复:MFC

文件操作大全

23.替换扩展名

//#include using std::string; string s(%%1);

string newExt(%%2);

string::size_type i=s.rfind('.',s.length()); if(i!=string::npos)

s.replace(i+1,newExt.length(),newExt); CString %%3(s);

24.追加路径 /*

#include #include

#include #include */

using namespace std;

using namespace boost::filesystem; try {

path p1=complete(path(%%2,native), path(%%1,native));

path p2=system_complete(path(%%2,native)); CString %%3(p3); }

catch(exception& e){ //e.what(); }

25.移动文件

MoveFile(%%1,%%2);

 作者:无尾兽零号机  4位粉丝 

 2009-10-24 15:17  回复此发言

7 回复:MFC

文件操作大全

26.移动一个文件夹下所有文件到另一个目录 //#include using std::string; char sep='/'; #ifdef _WIN32 sep='//'; #endif

CFileFind finder;

BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {

bWorking = finder.FindNextFile();

if(!finder.IsDirectory() || finder.IsDots()){ string s(finder.GetFileName()); CString sourcefile(%%1);

if(s.rfind(sep,s.length())!=string::npos) {

sourcefile=sourcefile+\"//\"+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i));

targetfile=%%2+\"//\"+targetfile/;

MoveFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); } } }

27.指定目录下搜索文件 CString strFileTitle; CFileFind finder;

BOOL bWorking = finder.FindFile (\"C://windows//sysbkup//*.cab\"); while(bWorking) {

bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle(); }

 作者:无尾兽零号机  4位粉丝 

 2009-10-25 10:44  回复此发言

8 回复:MFC

文件操作大全

28.打开对话框

CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMUCString str(\" \

mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); str.ReleaseBuffer();

POSITION mPos=mFileDlg.GetStartPosition(); CString pathName(\" \CFileStatus status; while(mPos!=NULL) {

pathName=mFileDlg.GetNextPathName(mPos); CFile::GetStatus( pathName, status ); }

29.文件分割 CFile m_File;

CString m_Filename,m_FileTitle,m_FilePath; m_FileName=%%1;

char pBuf[4096];

if(m_File.Open(m_FileName,CFile::modeRead | CFile::shareDenyWrite)) {

m_FileName=m_File.GetPathName(); 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,PartLength); strName.Format(\"%s%d\

wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate); wrFile.Write(pBuf,ReadBytes); wrFile.Close();

if(ReadBytesm_File.Close(); } else

AfxMessageBox(\"不能打开文件\");

 作者:无尾兽零号机  4位粉丝 

 2009-10-25 10:45  回复此发言

9 回复:MFC

文件操作大全

30.文件合并

//#include using std::string; string s(%%1); char sep='/'; #ifdef _WIN32 sep='//';

#endif

size_t sz=s.rfind(sep,s.length()); if(sz!=string::npos) {

CFile Out;

CString strFilename(s.substr(i+1,s.length()-i));

if(Out.Open(%%2+\"//\"+strfilename,cfile::modewrite%7ccfile::modecreate)){

for(int i=1;i<=2;i++) {

String Filename=%%%2+\"//\"+strfilename+atoi(i); CFile In;

if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096];

int nFilesize=In.GetLength(); while(nFilesize>0){

int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try{

In.Read(cbBuffer,nSize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; } try{

Out.Write(cbBuffer,nSize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER |

FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

nFilesize=nSize; } } else

AfxMessageBox(\"不能打开\"+Filename); } } else

AfxMessageBox(\"不能创建输出文件\"); }

 作者:无尾兽零号机  4位粉丝 

 2009-10-25 10:45  回复此发言 1

0 回复:MFC文件操作大全 31.文件简单加密 //#include using std::string; string s(%%1); char sep='/'; #ifdef _WIN32

sep='//'; #endif

size_t sz=s.rfind(sep,s.length()); if(sz!=string::npos) {

CFile Out,In;

int nFIlesize; char *lpMsgBuf;

CString strFilename(s.substr(i+1,s.length()-i)); if(!in.Open(%%1,CFile::modeRead)){ //不能打开输入文件 return; }

if(!Out.Open(%%2+\"//enc_%22+strfilename,cfile::modewrite/ | CFile::modeCreate)){

//不能打开输出文件 return; }

nFilesize=In.GetLength();

lpBuffer=new char[nFilesize]; if(lpBuffer==NULL){ //不能分配复制缓存 return; }

CFileStatus rStatus;

In.GetStatus(%%1,rStatus); try{

In.Read(cbBuffer,nFilesize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

for(int i=0;iint ibt=lpBuffer[i]; ibt+=100; ibt%=256;

bpBuffer[i]=(char)ibt;

} try{

Out.Write(cbBuffer,nFilesize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

Out.Close(); //In.Close();

CFile::SetStatus(%%2+\"//enc_%22+strfilename,rstatus); delete[] lpBuffer; }

 作者:无尾兽零号机  4位粉丝 

 2009-10-25 10:45  回复此发言

11 回复:MFC

文件操作大全

32.文件简单解密 //#include using std::string; string s(%%1); char sep='/'; #ifdef _WIN32 sep='//'; #endif

size_t sz=s.rfind(sep,s.length());

if(sz!=string::npos) {

CFile Out,In; int nFIlesize; char *lpMsgBuf;

CString strFilename(s.substr(i+1,s.length()-i));

if(!in.Open(%%2+\"//enc_%22+strfilename,cfile::moderead)){ //不能打开输入文件 return; }

if(!Out.Open(%%1,CFile::modeWrite | CFile::modeCreate)){ //不能打开输出文件 return; }

nFilesize=In.GetLength();

lpBuffer=new char[nFilesize]; if(lpBuffer==NULL){ //不能分配复制缓存 return; }

CFileStatus rStatus;

In.GetStatus(%%2+\"//enc_%22+strfilename,rstatus); try{

In.Read(cbBuffer,nFilesize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

for(int i=0;iint ibt=lpBuffer[i]; ibt-=100;ibt+=256; ibt%=256;

bpBuffer[i]=(char)ibt; } try{

Out.Write(cbBuffer,nFilesize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

Out.Close(); //In.Close();

CFile::SetStatus(%%1,rStatus); delete[] lpBuffer; }

 作者:无尾兽零号机  4位粉丝 

 2009-10-25 10:45  回复此发言

12 回复:MFC

文件操作大全

33.读取ini文件属性

CStdioFile inifile(%%1,CFile::modeRead); CString path = inifile.GetFilePath(); inifile.Close(); char key[1024];

DWORD bytes = GetPrivateProfileString(%%2,%%3,%%4,key,1024,path); if(bytes < 1024) key[bytes] = '/0'; CString %%5(key);

34.合并一个文件下所有的文件 CString Directory=%%1+\"*.*\"; CFileFind FFile; CFile Out;

if(Out.Open(%%2,CFile::modeWrite|CFile::modeCreate)){ BOOL bFound=FFile.FindFile(Directory); while(bFound) {

bFound=FFile.FileNextFile();

if(!FFile.IsDirectory() && !FFile.IsDots()) {

CString Filename=FFile.GetFileName(); CFile In;

if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096];

int nFIlesize=In.GetLength(); while(nFIlesize>0){ {

int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try {

In.Read(cbBuffer,nSize); }

catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

try {

Out.Write(cbBuffer,nSize); }

catch(CFileException *e){

char *lpMsgBuf; if(FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError,

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); }

e->Delete(); return; }

nFilesize=nSize; } } else

AfxMessageBox(\"不能打开\"+Filename); } } } else

AfxMessageBox(\"不能创建输出文件\");

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务