之前写关于文件操作的程序,总要冥想一番,在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.