文件打开的几种方式(c/c++/win32/mfc)

以打开"myfile.txt"为例。
1,在c中使用的传统的<stdio.h>
    FILE* fp;
    char* fn = "myfile.txt";
    fp = fopen(fn, "a+");
    if( fp != NULL )
    {
         //use file
    }
    fclose(fp);
  
2, 在c++推荐使用的<fstream.h>
    ofstream of;
    of.open("myfile.txt")
    of.close()
    这个个人感觉比fopen好用,一般的使用不用关注那么多的参数。


3, 在Win32中使用的CreateFile函数。
    在Windows上,感觉使用CreateFile系列函数比较正宗,得仔细看看msdn, 每次写一个(void*)的数据块到文件,很通用。

    在Win32中有的时候要搜索文件,需要用到FindFirstFile,FindNextFile,FileClose等函数,如:

class CFindFile { public: CFindFile(void) { m_hFind = INVALID_HANDLE_VALUE; m_bFound = false; memset(&m_FindFileData,0,sizeof(m_FindFileData)); } ~CFindFile(void) { if (m_hFind != INVALID_HANDLE_VALUE) { ::FindClose(m_hFind); } } //找到第一个文件。 void First(LPCTSTR lpFileName) { m_hFind = ::FindFirstFile(lpFileName,&m_FindFileData); if (m_hFind != INVALID_HANDLE_VALUE) { m_bFound = true; } else { m_bFound = false; } } //查找一下文件。 void Next(void) { m_bFound = FindNextFile(m_hFind, &m_FindFileData) ? true:false; } //是否可以查找一下文件。 bool IsOK(void) const { return m_bFound; } //返回当前文件的属性。 const WIN32_FIND_DATA& GetCurFile(void) { return m_FindFileData; } protected: HANDLE m_hFind; //保存当查找的位置句柄。 bool m_bFound; //当前查找是否成功。 WIN32_FIND_DATA m_FindFileData;//保存当前文件的属性。 }; 使用: CFindFile findDemo; for (findDemo.First(_T("D://Program Files//*"));findDemo.IsOK();findDemo.Next()) { OutputDebugString(findDemo.GetCurFile().cFileName); OutputDebugString(_T("/r/n")); }


4,在mfc中使用CFile
  这个很少用。不清楚,可能很方便。

 

本文转自:http://blog.csdn.net/myemailcn/archive/2004/03/16/21785.aspx

               http://blog.csdn.net/caimouse/archive/2007/10/25/1844006.aspx

你可能感兴趣的:(文件打开的几种方式(c/c++/win32/mfc))