-1

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

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

在我们的产品中,ntwritefile() 失败并出现错误 ERROR_NOT_ENOUGH_MEMORY。我试图了解,在什么情况下,我们会得到那个错误。

4

6 回答 6

3

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

于 2016-01-16T00:31:06.703 回答
1

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

  1. 创建文件
  2. 写文件

而已。

于 2012-05-23T07:15:45.677 回答
1

您可以创建大小为 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;
}
于 2012-05-23T07:22:19.433 回答
0

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

如果它是您之后的第一个,那么您可以使用CreateFile并将WriteFile缓冲区大小限制为 100 字节。

如果是第二个……那我觉得不可能……

于 2012-05-23T07:21:08.907 回答
0

从架构上讲,您最好的方法如下:

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

很抱歉,您不需要为此提供缓冲区。只需创建一个大于文件大小的文件的内存映射对象,系统就会自动将文件扩展为该大小。

但是对于 100 字节,您只需创建一个 100 字节的虚拟 char 数组并将其写入文件。

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

于 2012-12-09T09:16:29.783 回答