c++ - WriteFile重叠和fwrite等效

标签 c++ file io

在Windows上, WriteFile() 函数具有一个称为lpOverlapped的参数,该参数可让您指定写入文件的偏移量。

我想知道,是否有等效的fwrite()跨平台?

我看到,如果使用rb+标志打开了文件,则可以使用fseek()写入特定的偏移量。我的问题是-这种方法是否等同于重叠的WriteFile(),并且在所有平台上都会产生相同的行为吗?

背景

我之所以需要它,是因为我正在将阻塞的压缩数据流写入文件,并且希望能够从文件中加载特定的块并能够对其进行解压缩。因此,基本上,如果我跟踪该块在文件中的开始位置,则可以加载该块并以更有效的方式对其进行解压缩。我知道可能有更好的方法可以执行此操作,但是我需要此解决方案以实现向后兼容。

最佳答案

假设您可以使用POSIX函数,而不仅仅是使用C或C++标准库中的内容,那么解决方案是 pwrite (又名:定位写入)。

ssize_t rc = pwrite(file_handle, data_ptr, data_size, destination_offset);

关于c++ - WriteFile重叠和fwrite等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032106/

相关文章:

c++ - 使 C++ COM 类更易于测试

c# - 将 MemoryStream 保存到文件或从文件加载 MemoryStream

database - 将图像存储在数据库或文件系统中

c - 这不是同一个逻辑吗?不同的结果

java - 转到方法,从文件中提取信息,然后在分割后返回它。我收到错误

c++ - 如何知道我的程序在运行时调用了哪个 'sin' 函数?

javascript - 试图在 C++ 中从 JS 重新创建这段代码

java - 尝试读取系统提供给我的 listFiles 时出现 FileNotFoundException。这是名称编码问题吗?

java - 随机访问文件问题

c++ - 糟糕的串行端口/USB 代码 (C++) - 修复建议?