文件操作(三)

来源:互联网 发布:linux用什么语言写的 编辑:程序博客网 时间:2024/04/30 15:47
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;
}

在相应的地方调用以上两个函数即可。




 

原创粉丝点击