【发布时间】:2009-01-07 15:37:37
【问题描述】:
在 Windows XP 中,File Properties 下的实际文件大小是多少?大小还是磁盘大小?
我正在寻找文件的确切大小,以字节为单位。为什么 Windows 会指责使用了磁盘上的额外空间,而不是称其为 Size Windows takes to store this file?
【问题讨论】:
在 Windows XP 中,File Properties 下的实际文件大小是多少?大小还是磁盘大小?
我正在寻找文件的确切大小,以字节为单位。为什么 Windows 会指责使用了磁盘上的额外空间,而不是称其为 Size Windows takes to store this file?
【问题讨论】:
我不相信这是特定于 Windows 的问题。由于磁盘是按块分配的,如果文件大小不是磁盘块大小的整数倍,则文件可能会占用比实际大小更多的磁盘空间。
考虑:
File |------3.4k------| |-------------4.1k--------|
Disk Blocks |--------4k----------|--------4k----------|--------4k----------|
磁盘上的文件必须与分配的块对齐(它们必须从块开始的位置开始),例如,如果文件实际大小为 3.4k,磁盘块大小为 4k,则磁盘上的文件大小为 4k因为即使文件中只有 3.4k 的数据,它实际上占用了磁盘上的 4k,因为您不能将该块的剩余部分用于任何事情。
【讨论】:
大小是文件中的实际字节数。
磁盘大小是文件在磁盘上占用的字节数。这通常是一个更高的数字,因为磁盘空间只能以块为单位分配,因此在文件末尾会在磁盘上保留额外的 slack 空间来填满最后一个块。但这个闲置空间实际上并不是文件的一部分。
【讨论】:
在抨击 Windows 浪费磁盘空间之前,您应该了解一下所有文件系统管理硬盘空间的程度。
HDD 上“最小”的可寻址空间块是一个扇区(通常为 512 字节),您无法读取或写入小于该值的空间。如果要在扇区中写入一个字节,则必须读取该扇区,修改该字节,然后将该扇区写回。这就是物理/电子学的工作原理。 “块”通常是一个或多个扇区,代表文件系统将为文件分配的最小空间块。旧 DOS“基于 FAT”的文件系统随着磁盘大小的增加而增加块大小。
由于许多原因,文件系统不希望多个文件共享同一个扇区。想象一下,如果您想让文件更长一点 - 在分配额外扇区以使文件更大之前,可以使用扇区末尾的“浪费空间”。
而且,虽然理论上有可能拥有一个可以按字节(甚至是按位)分配磁盘文件的文件系统,但磁盘上用于跟踪这一点的管理存储量会猛增,而且可能超过任何您可能已经获得的优势。而且性能可能会很差...
【讨论】:
当以较大的单位(1KB = 1,024B 等)显示时,Windows 始终正确计算文件大小。
大小是实际文件大小,而磁盘大小是硬盘驱动器上的实际大小。由于硬盘驱动器被分解成块,因此您必须完全消耗一个块。我就像有一个 4L 的桶,而你有 5L 的水,你需要两个桶来盛水。
【讨论】:
尺寸。磁盘大小是在驱动器上存储文件所需的块数 * 块大小。
【讨论】:
磁盘上的大小是指磁盘被分成块的事实,因此使用 4kb 块的磁盘将报告磁盘上的大小为 4k
我制作了一个包含一个字符的文本文件,它正确报告文件的大小为 1 个字节。磁盘大小为 4k,因为这是文件可以占用的最小磁盘空间。
【讨论】:
嗯,定义“真实”。该文件将始终占用一些整数块;我忘记了 Windows 文件系统中的块大小是多少(我已经有大约 10 年没有使用过 Windows 了),但我相信你可以从 DIR 中获取块的数量,或者,最坏的情况是,通过安装 Cygwin 和使用ls。所以,“真正的”文件大小是块大小×块数。
或者,由于文件可以在块的中间结束,“真实”文件大小可能是实际的字节数,在这种情况下wc -c 会给出。
【讨论】:
NTFS 可以在目录条目中存储非常小的文件,因此它们实际上不会占用磁盘空间,并且访问速度非常快。
托尼
【讨论】: