删除文件开头一字节,效率
通常,文件操作,删除文件开头一字节,就是把后面所有的内容往前移。
有没有效率更高的办法,截掉开头,告诉操作系统,文件是从这里开始的?
[解决办法]
- C/C++ code
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);}