您的位置:首页 > 编程语言 > C语言/C++

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

2010-12-21 21:11 686 查看
以打开"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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: