【问题标题】:C# .NET GZipStream returning inconsistent file lengthsC# .NET GZipStream 返回不一致的文件长度
【发布时间】:2025-12-13 12:55:02
【问题描述】:

我注意到每次通过GZipStream 运行同一个文件时,文件大小都会有所不同。当我通过 Windows 资源管理器查看文件时,size 不同,但Size on disk 始终相同。这是预期的行为吗?

【问题讨论】:

  • 你的意思是大小总是不同的(同一个文件的每次压缩)或者'大小'和'磁盘上的大小'总是不同的?如果是后者,则输出必须小于驱动器的“块大小”。
  • @Mr.Disappointment - 每次压缩的大小总是不同的。

标签: c# .net gzipstream


【解决方案1】:

你的文件小吗?通常对于较小的文件,操作系统可能会在文件中添加一些填充以使其填充集群/块,因此您会注意到大小可能略有不同。这在较小的文件上比较大的文件更明显。

有关磁盘大小和大小之间差异的说明,请查看此链接。

http://freewindowsvistatutorials.com/differencesBetweenFileSizeVsSizeOnDiskInWindows7VistaXP.php

【讨论】:

  • 问题的措辞是想知道 OP 是否意味着压缩时同一文件的“大小”是任意的,并且“磁盘上的大小”观察是一个红鲱鱼。
  • @YetAnotherSoftwareDevel - 文件大小超过 1GB。
  • 差异有多大?几KB?? MB??
  • @YetAnotherSoftwareDeveloper:实际上是几个字节......我意识到这没什么,但它仍然让我感到惊讶。我想知道每个实例的算法发生了什么变化。