如何在 Windows 中将文件大小设置为 100 字节 C++.
How to set file size to 100 Bytes in Windows in C++?
您能否告诉您如何将文件最大大小设置为100字节。如果我尝试写入超过 100 字节的数据,ntwritefile()
应该抛出错误ERROR_NOT_ENOUGH_MEMORY
。
您能否建议我,一个 widnows API 来设置 100 字节(或固定大小(到文件?
在我们的产品中,ntwritefile(( 失败并显示错误ERROR_NOT_ENOUGH_MEMORY。我试图理解,在什么情况下,我们会得到这个错误。
使用 SetFilePointer
,然后SetEndOfFile
。别忘了SetEndOfFile
后CloseHandle
!
在Windows上,这看起来像这样:
- 创建文件
- 写文件
就是这样。
您可以创建一个大小为 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 字节,则对文件的任何进一步写入都将不起作用?
如果这是您要追求的第一个,则可以使用 CreateFile
和 WriteFile
并将缓冲区大小限制为 100 字节。
如果是第二个......那么我认为这是不可能的......
从
体系结构上讲,您的最佳方法如下:
- 确定您如何读取和写入相关文件。
- 创建一个通过单个托管类提供这些相同设施的接口。API 将尽可能接近您已有的 API。
- 添加封装在管理器类中的代码,以便在编写时跟踪缓冲区的大小,可能还会缓冲文件中所需的 100 个字节。然后,代码可以以您欺骗的任何方式检测和处理溢出情况(即,如果这是您想要的,则抛出异常(。
很抱歉你不需要缓冲器。简单地说,如果您创建一个大于文件大小,系统会自动将文件展开为该大小。
但是对于只有 100 字节,您只需创建一个 100 字节的虚拟字符数组,并且将其写入文件。
看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366542(v=vs.85(.aspx
相关文章:
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 是否强制转换void**并将第一个字节设置为nullptr
- 蓝牙LE:设置字节数组的特征会发送错误的值
- 如果字节中的所有位都设置为高,则设置为高字节
- 在 C++ 中立即设置故障位(在读取任何字节之前)
- 如何在没有循环的字节中设置位
- 你能为 Asio 的read_until设置字节限制吗?
- 以 C++ 为单位设置(短整型)的上下字节
- 如何在C++中设置短整型的上限和下限字节
- 如何正确设置fwrite()的大小和计数参数以编写一块字节
- 函数返回布尔值,只设置整个寄存器的1个字节
- 将 int 的所有字节设置为(无符号字符)0,保证表示零
- 如何在 Windows 中将文件大小设置为 100 字节 C++.
- C++/编译:是否可以设置VPTR(全局vtable + 2字节索引)的大小
- 如何使用 #define 语句来设置字节数组
- 如何告诉GCC通过编译器设置(不是编译指示)将结构大小边界设置为4字节?
- 设置 for 循环以循环,直到检测到空字节
- 是否有Windows API以原子方式设置16字节数组
- 如何设置整数的前三个字节?在C++中