【发布时间】:2020-07-23 14:32:08
【问题描述】:
我正在尝试使用 c# 创建一个 506 KB 的二进制文件(我用来修改游戏)。但是,无论我尝试什么,文件大小总是可以被 4 整除(不幸的是 506 不是)。例如,我得到的结果文件为 504 KB。我已经得到它是 508 KB。但是,我无法将其设为 506 KB。有没有办法让你得到的文件大小不必被 4 整除?这是我尝试过的示例(最终仍会生成大小为 504 KB 的文件):
int k = 1024 * 506; //because there are 1024 bytes in a KB and I want 506 KB` `
BinaryWriter writer = new BinaryWriter(System.IO.File.OpenWrite("path"));
for(int i = 0; i < k; i++)`
{
writer.Write(Convert.ToByte(false));
}
【问题讨论】:
-
您在这里遗漏了一些重要信息。 1. 为什么需要它不能被 4 整除? 2. 多余的字节是什么?
-
另外,您的单位也存在一些不确定性。千字节还是千字节?真的是你说的尺寸,还是你读错单位了?
-
你怎么知道文件的大小?向我们展示显示文件大小的属性对话框的屏幕截图 - 文件大小和磁盘上的大小可能是两个不同的东西,您可能看的不是正确的
-
一个更好的讨论指标是写入的确切字节数。
-
我尝试了你的代码(只是在最后添加了
writer.Close)并且无法重现你的问题。以下是文件详细信息:Size: 506 KB (518.144 bytes), Size on disk: 508 KB (520.192)。对我来说看起来不错,518144 正好是 1024*506。磁盘上的大小显然更大,因为NTFS has a default cluster size of 4KB。
标签: c# binaryfiles system.io.file