VC编程基础:文件和文件夹操作

来源:互联网 发布:拳击 泰拳 身材 知乎 编辑:程序博客网 时间:2024/05/29 13:51

之前写关于文件操作的程序,总要冥想一番,在msdn上或网络上搜索一番才能知道有哪些操作文件的api。所以今天闲暇之余总结下,

以后虽然做不到写程序是信手拈来,但至少也略有所知啊:

一)CreateFile,SetFilePointer,WriteFile,GetFileSize, ReadFile,CloseHandle, CopyFile, MoveFile, DeleteFile, _trename。为了减少IO的操作,在写文件的时候我们可以加一个buffer,只有这个buffer满了或者放不下内容了才往文件里写,一般情况下只是把内容拷贝到Buffer里,简单的例子如下:

int WriteString(LPCTSTR strFileName, LPCSTR strScr)
{
    HANDLE hFile = ::CreateFile(strFileName,
        GENERIC_WRITE|GENERIC_READ,
        FILE_SHARE_WRITE | FILE_SHARE_READ,
        NULL,
        OPEN_ALWAYS,
        FILE_ATTRIBUTE_NORMAL,
        NULL);

    if(INVALID_HANDLE_VALUE  == hFile)
    {
        return -1;
    }

    ::SetFilePointer(hFile, 0, NULL, FILE_END);

    int strLength = ::strlen(strScr);
    if(bufPos + strLength > MAX_LENGTH)
    {
        DWORD lpNumberOfBytesWritten;
        WriteFile(hFile, buffer, bufPos, &lpNumberOfBytesWritten, NULL);
        bufPos = 0;

        WriteFile(hFile, strScr, strLength, &lpNumberOfBytesWritten, NULL);

        CloseHandle(hFile);
        return 0;
    }

    memcpy(buffer + bufPos, strScr, strLength);
    bufPos += strLength;
    CloseHandle(hFile);
    return 0;
}

 

二)fopen, fread,fwrite, fclose,fgetc,fgetc, fgets,fputs, fseek,ftell

三)运用数据流操作文件:

1.ifstream: 可以用方法getline从该对象中一行行的读取

2.ofstream:基于该对象的方法:write,flush,put, tellp, seekp.

原创粉丝点击