gpt4 book ai didi

c++ - 调整文件大小(向下)

转载 作者:可可西里 更新时间:2023-11-01 09:31:55 28 4
gpt4 key购买 nike

我正在尝试就地缩小文件。
我正在用另一个文件的内容替换一个文件的内容,完成后我想确保源文件是否小于目标文件,目标文件是否正确收缩。

(为什么:因为dest文件是一个备份,写入media的开销很大,所以我只把deltas写入备份)

1.) HANDLE hDest =(HANDLE)_get_osfhandle( fileno(backupFile.GetBufferedHandle()) );
2.) DWORD startingSize = GetFileSize(hDest, NULL);
3.) DWORD dwPtr = SetFilePointer(hDest, newSize, NULL, FILE_BEGIN);
4.) int err = GetLastError();
5.) if (dwPtr != INVALID_SET_FILE_POINTER)
6.) { err = SetEndOfFile(hDest);
7.) if(err == 0)
8.) err = GetLastError();
9.) err = SetFileValidData(hDest, newSize);
10.) }
11.) DWORD endingSize = GetFileSize(hDest, NULL);

我在第 8 行收到一个错误,即 1224...我想知道是否有人可以告诉我原因,或提出更好的方法。

最佳答案

"net helpmsg 1224"-> 无法对打开了用户映射部分的文件执行请求的操作。

来自 MSDN 的 SetEndOfFile :

If CreateFileMapping is called to create a file mapping object for hFile, UnmapViewOfFile must be called first to unmap all views and call CloseHandle to close the file mapping object before you can call SetEndOfFile.

关于c++ - 调整文件大小(向下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com