Win32下的文件操作:
在Win32下对文件操作可以通过以下Win32 API完成:
CreateFile(...)-> CreateFile会返回一个文件handle,通过这个文件handle可以对文件进行操作。
WriteFile(...)
ReadFile(...)
......
如下例:
bool fWriteFile(const char *pchBuffer)
{
HANDLE hFile;
int iLen = 0;
DWORD iRealLength = 0;
if (NULL == pchBuffer)
{
return 1;
}
hFile = CreateFile("win32.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
iLen = strlen(pchBuffer);
WriteFile(hFile, pchBuffer, iLen, &iRealLength, NULL);
CloseHandle(hFile);
return true;
}
bool fReadFile()
{
HANDLE hFile;
DWORD iRealLength = 0;
char pchBuffer[100];
memset(pchBuffer, 0, 100);
hFile = CreateFile("win32.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
ReadFile(hFile, pchBuffer, 100, &iRealLength, NULL);
pchBuffer[iRealLength] = 0;
printf("%s/n", pchBuffer);
CloseHandle(hFile);
return true;
}
int main(int argc, char* argv[])
{
char *pchBuffer = "http://news.sina.com.cn";
if (!fWriteFile(pchBuffer))
{
return 1;
}
if (!fReadFile())
{
return 1;
}
return 0;
}
注意:实际上,CreateFile是一个功能非常强大的Win32 API函数,它不但可以创建或打开一个文件,返回相应文件对象handle,它还可一个创建或打开以下对象,返回相应对象的handle,包括:
管道
邮槽
通信资源
磁盘设备(仅适用于Window NT平台)
控制台
目录(仅用于打开操作)
MFC下文件操作:
在MFC中,对文件操作可以通过CFile类来完成,CFile类对文件操作提供了很好的支持,所以如果我们在MFC编程中,遇到涉及文件的操作,最好采用CFile来完成:构造一个CFile类的对象,调用其相应的方法。如下例:
bool fWriteFile(const char *pchBuffer)
{
int iLen = 0;
CFile file("mfc.txt", CFile::modeCreate | CFile::modeWrite);
iLen = strlen(pchBuffer);
file.Write(pchBuffer, iLen);
file.Close();
return true;
}
char* pchReadFile()
{
char *pchBuffer = NULL;
DWORD ulLen = 0;
CFile file("mfc.txt", CFile::modeRead);
ulLen = file.GetLength(); //得到文件长度
pchBuffer = new char[ulLen+1];
file.Read(pchBuffer, ulLen);
pchBuffer[ulLen] = 0;
file.Close();
return pchBuffer;
}
在相应的地方调用以上两个函数即可。
在Win32下对文件操作可以通过以下Win32 API完成:
CreateFile(...)-> CreateFile会返回一个文件handle,通过这个文件handle可以对文件进行操作。
WriteFile(...)
ReadFile(...)
......
如下例:
bool fWriteFile(const char *pchBuffer)
{
HANDLE hFile;
int iLen = 0;
DWORD iRealLength = 0;
if (NULL == pchBuffer)
{
return 1;
}
hFile = CreateFile("win32.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
iLen = strlen(pchBuffer);
WriteFile(hFile, pchBuffer, iLen, &iRealLength, NULL);
CloseHandle(hFile);
return true;
}
bool fReadFile()
{
HANDLE hFile;
DWORD iRealLength = 0;
char pchBuffer[100];
memset(pchBuffer, 0, 100);
hFile = CreateFile("win32.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
ReadFile(hFile, pchBuffer, 100, &iRealLength, NULL);
pchBuffer[iRealLength] = 0;
printf("%s/n", pchBuffer);
CloseHandle(hFile);
return true;
}
int main(int argc, char* argv[])
{
char *pchBuffer = "http://news.sina.com.cn";
if (!fWriteFile(pchBuffer))
{
return 1;
}
if (!fReadFile())
{
return 1;
}
return 0;
}
注意:实际上,CreateFile是一个功能非常强大的Win32 API函数,它不但可以创建或打开一个文件,返回相应文件对象handle,它还可一个创建或打开以下对象,返回相应对象的handle,包括:
管道
邮槽
通信资源
磁盘设备(仅适用于Window NT平台)
控制台
目录(仅用于打开操作)
MFC下文件操作:
在MFC中,对文件操作可以通过CFile类来完成,CFile类对文件操作提供了很好的支持,所以如果我们在MFC编程中,遇到涉及文件的操作,最好采用CFile来完成:构造一个CFile类的对象,调用其相应的方法。如下例:
bool fWriteFile(const char *pchBuffer)
{
int iLen = 0;
CFile file("mfc.txt", CFile::modeCreate | CFile::modeWrite);
iLen = strlen(pchBuffer);
file.Write(pchBuffer, iLen);
file.Close();
return true;
}
char* pchReadFile()
{
char *pchBuffer = NULL;
DWORD ulLen = 0;
CFile file("mfc.txt", CFile::modeRead);
ulLen = file.GetLength(); //得到文件长度
pchBuffer = new char[ulLen+1];
file.Read(pchBuffer, ulLen);
pchBuffer[ulLen] = 0;
file.Close();
return pchBuffer;
}
在相应的地方调用以上两个函数即可。