如何在 Windows 中将文件大小设置为 100 字节 C++.

How to set file size to 100 Bytes in Windows in C++?

本文关键字:设置 字节 C++ 文件大小 Windows      更新时间:2023-10-16

您能否告诉您如何将文件最大大小设置为100字节。如果我尝试写入超过 100 字节的数据,ntwritefile()应该抛出错误ERROR_NOT_ENOUGH_MEMORY

您能否建议我,一个 widnows API 来设置 100 字节(或固定大小(到文件?

在我们的产品中,ntwritefile(( 失败并显示错误ERROR_NOT_ENOUGH_MEMORY。我试图理解,在什么情况下,我们会得到这个错误。

使用 SetFilePointer ,然后SetEndOfFile 。别忘了SetEndOfFileCloseHandle

在Windows上,这看起来像这样:

  1. 创建文件
  2. 写文件

就是这样。

您可以创建一个大小为 100 个字符的缓冲区,并在完成后将缓冲区写入文件。

#include <stdio.h>
#include <memory.h>

int main(int argc, char* argv[])
{
    char buffer[100];
    //assign values
    memset(buffer, 'A', 100);
    buffer[5]='@';
    FILE * pFile;
    pFile = fopen ( "buffer.100" , "wb" );
    fwrite (buffer, 1, sizeof(buffer) , pFile );
    fclose (pFile);
    return 0;
}
是否要

创建 100 字节的文件?或者是否要将文件大小限制为 100 字节,这意味着如果文件超过 100 字节,则对文件的任何进一步写入都将不起作用?

如果这是您要追求的第一个,则可以使用 CreateFileWriteFile并将缓冲区大小限制为 100 字节。

如果是第二个......那么我认为这是不可能的......

体系结构上讲,您的最佳方法如下:

  1. 确定您如何读取和写入相关文件。
  2. 创建一个通过单个托管类提供这些相同设施的接口。API 将尽可能接近您已有的 API。
  3. 添加封装在管理器类中的代码,以便在编写时跟踪缓冲区的大小,可能还会缓冲文件中所需的 100 个字节。然后,代码可以以您欺骗的任何方式检测和处理溢出情况(即,如果这是您想要的,则抛出异常(。

很抱歉你不需要缓冲器。简单地说,如果您创建一个大于文件大小,系统会自动将文件展开为该大小。

但是对于只有 100 字节,

您只需创建一个 100 字节的虚拟字符数组,并且将其写入文件。

看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366542(v=vs.85(.aspx