当前位置: 首页 > 知识库问答 >
问题:

在C#中有可能写一个文件大小不能被4整除的二进制文件吗?

顾高翰
2023-03-14

我正在尝试用C#创建一个二进制文件(我正在用它来修改一个游戏),它是506 KB。 然而,无论我尝试什么,文件大小总是可以被4整除(不幸的是506不是)。 例如,我得到的结果文件为504 KB。 我得到它是508KB。 但是,我不能得到它是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));
 }   

共有2个答案

吕嘉荣
2023-03-14

更新:看来@海因子基本上很巧妙地给了我解决方案。 我只是尝试在代码中添加writer.close(),效果很好。 我拿到了我需要的506 KB文件。 谢谢大家提供建议。

陆沈浪
2023-03-14

我的猜测是,您已经将文件写入了一个具有4KB集群的磁盘:

顺便提一下,file.writeAllBytes(路径,新字节[506*1024])可能是将518144个零字节精确写入磁盘的一种更简洁,性能更好的方法,而不是将false逐个转换为字节。

 类似资料:
  • 我正在实现一个服务,其中我必须提取一个zip文件,它是由一个用户上传的。 我使用的是从PHP脚本调用的unix。

  • 本文向大家介绍C# FileStream复制大文件功能,包括了C# FileStream复制大文件功能的使用技巧和注意事项,需要的朋友参考一下 FileStream缓冲读取和写入可以提高性能。每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。 FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中

  • 主要内容:C++ ostream::write()方法写文件,C++ istream::read()方法读文件通过《 C++文本文件读写操作》一节的学习,读者了解了以文本形式读写文件和以二进制形式读写文件的区别,并掌握了用重载的 >> 和 << 运算符实现以文本形式读写文件。在此基础上,本节继续讲解如何以二进制形式读写文件。 不过介绍具体的实现方法前,先给读者介绍一下相比以文本形式读写文件,以二进制形式读写文件有哪些好处? 举个例子,现在要做一个学籍管理程序,其中一个重要的工作就是记录学生的学号

  • 问题内容: 我有一个嵌入式Linux系统,该系统将数据存储在一个很大的文件中,并将新数据附加到末尾。随着文件大小逐渐接近可用存储空间,我需要删除最旧的数据。 问题是,我不能真正接受像往常一样将大量数据“向上”移动到文件上所造成的破坏-长时间锁定文件以重写它(加上这是闪存介质) ,则会对闪光灯造成不必要的磨损)。 可能最简单的方法是将文件拆分为多个较小的文件,但这与数据的处理和处理方式有关,这有几个

  • 本文向大家介绍二进制前缀在Python中可被5整除,包括了二进制前缀在Python中可被5整除的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个0和1的数组A,考虑N [i]是从索引A [0]到A [i]的第i个子数组,被解释为二进制数。我们必须找到一个布尔答案列表,其中且仅当N [i]被5整除时,答案[i]为真。 因此,如果输入类似于[0,1,1,1,1,1,1],则输出将为[true,f

  • 问题内容: 我在C#.net中有一个程序,它使用写入1个整数和3个字符串到文件中。 现在,我正在用Java编程(对于Android,这是Java的新手),我必须访问以前使用C#写入文件的数据。 我尝试使用和,但无法获得正确的结果。我通常会得到: java.io.UTFDataFormatException:字节21附近的输入格式错误 或者和我得到的是错误的… 这样做的正确方法是什么? 问题答案:

  • Python 不仅支持文本文件的读写,也支持二进制文件的读写,比如图片,声音文件等。 读取二进制文件 读取二进制文件使用 ‘rb’ 模式。 这里以图片为例: with open('test.png', 'rb') as f: image_data = f.read() # image_data 是字节字符串格式的,而不是文本字符串 这里需要注意的是,在读取二进制数据时,返回的数据是字

  • 问题内容: 我正在尝试在JSP / Struts2中实现文件上传,但我注意到了一个奇怪的行为。我在struts.xml中以这种方式声明了将文件大小限制为1MB的操作 它工作得很好,非图像文件和1MB以上的图像都会引发错误。唯一的问题是,太大的文件在删除之前还是已完全上传到服务器的temp文件夹中。 有没有办法在达到限制后立即停止上传? 编辑: 四元数的解决方案有效,当请求超过了下一行所设置的最大值