删除文件开头一字节,效率
通常,文件操作,删除文件开头一字节,就是把后面所有的内容往前移。
有没有效率更高的办法,截掉开头,告诉操作系统,文件是从这里开始的?
[解决办法]
void SetBeginOfFile(HANDLE hFile, int offset)
{
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
LPVOID lpMap = MapViewOfFile(hFileMap, FILE_MAP_READ
[解决办法]
FILE_MAP_WRITE, 0, 0, 0);
DWORD dwFileSize = GetFileSize(hFile, NULL) - offset;
offset+=(int)lpMap;
CopyMemory((PVOID)lpMap, (CONST VOID *)offset, dwFileSize);
UnmapViewOfFile(lpMap);
CloseHandle(hFileMap);
SetFilePointer(hFile, dwFileSize, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
}
void main()
{
HANDLE hFile = CreateFile("test.txt", GENERIC_READ
[解决办法]
GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
SetBeginOfFile(hFile, 1);
CloseHandle(hFile);
}