Eug*_*e S 176 filesystems
只是我遇到了一些事情,想不出合适的解释。如果我在我的 PC 上创建一个空的 *.txt 文件,然后查看它的大小,它会显示 0。但这怎么可能呢?我的意思是即使文件本身是空的,它仍然必须有一些大小,只是为了存储它自己的名字。这怎么解释?(非操作系统特定)
Dav*_*rtz 203
这是可能的,因为确实没有文件。只有一个带有名称和所有者的目录条目。目录条目在逻辑上与文件不同。例如,同一个文件在多个目录中可以有多个名称。
不幸的是,术语“文件”并不总是用来表示完全相同的东西。但文件大小逻辑来自模型,其中目录条目将文件“附加”到目录,文件名和相关元数据存储在目录中。
Cor*_*mon 82
“文件大小”的语义与您使用的不同。
有许多有意义的文件大小。最常见的,也是您在此处看到的,是“文件中的字节数”。如果文件是一个空文本文件,它可能确实包含 0 个字节。这个数字对程序员很重要,因为我们经常需要打开一个文件,“读取所有数据”,然后关闭它。我们需要知道文件中有多少字节的数据,以便我们可以提前计划。
另一个含义来自大多数文件系统存储数据的方式。大多数文件系统将数据存储在块中。例如,文件系统可能将数据存储在 64kB 块中,这意味着它永远不会分配不是 64kB 的偶数倍的任何内容。这听起来效率低下,但它可以使簿记变得更加简单,而且通常更简单意味着更快。
您正在讨论的第三个含义是硬盘驱动器上描述文件存在所需的实际位数。这包括通常与文件分开存储的信息。例如,在 Linux 中,“文件名”的概念存储在包含文件的目录的 inode 中(编辑:来自评论,从技术上讲,这存储在目录的数据中。当我写这篇文章时,我想到了小-directory case。小于156字节的数据可以直接存储在inode中)。这不是一个常用的含义,因为在不了解文件系统非常深入的内部工作原理的情况下很难确定(您是否考虑了存储文件所有权限所需的空间?)。但是,如果您有一个 1,000,000 字节的硬盘,
Mat*_*471 53
文件名存储在其他地方。
您的磁盘上将有一个“文件系统”,简单地说就是一种选择文件名和文件在物理磁盘上的表示和解释方式的方法。
在大多数 Windows 磁盘上,您将使用名为“NTFS”(新技术文件系统)的文件系统,它将文件名信息存储在与文件内容分开的主文件表 (MFT) 中。请参阅维基百科关于主文件表的文章。
因此,文件本身的长度为 0 字节,但它在 MFT 中的条目仍将占用一些空间。
小智 12
这是一个非常有趣的本体论问题......
文件本身就是文件的内容。如果文件没有内容,则其大小为零。文件名是文件的一部分,就像您自己的名字在物理上是您的一部分一样(即它不是)。
正如您的名字作为人们(和您自己的)头脑中的一个想法存在一样,它指代/指向物理上的您,文件名存在于文件系统的目录树中并且它指代/指向文件。
小智 7
(答案有点晚了......)
文件大小如何为零比上述答案提供的要复杂一些。该问题被标记为 Win7,但查看其他“更简单”的文件系统(如FAT或NTFS)可能会很有用,因为这些概念是相似的。
磁盘不“知道”什么是文件,什么是目录;它是小块中的所有数据。操作系统区分数据块的含义。前几个是特殊的,但其余的块保存有关数据的信息(例如:文件名、文件长度、保存数据的第一个数据块)或数据本身。
目录是一个特殊的“文件”,操作系统理解其“数据”是一个包含文件信息的信息块,而不是文件的内容。一个很好的类比是物理图书馆和卡片目录。将信息块视为卡片目录,将书架视为数据块(卡片目录也位于类似书架的结构上)。
当您“创建”一个文件(比如使用 UNIXtouch
命令)时,操作系统首先在信息块(目录)中创建一个条目,内容如下:
只有当有一些数据要“写入”时,它才会尝试找到一个空数据块来存储数据。但是数据块的大小是固定的(比如 32K),便于磁盘访问和操作系统读取。如果你只写“Hello”,大部分块是“空的”(实际上可能不是零,而是之前的垃圾),所以表现在也将大小更新为长度(比如 5 个字符 + 结束文件)这样你就不会得到不好的东西。
当您将“文件”更新为长度 > 块大小时,操作系统将数据写入新块并更新数据块以表示文件在第一个(依此类推)之后继续到下一个块,并且长度更新为新长度(细节不同)。
您最终得到的是一组信息数据块(目录或列表),其中包含有关数据块链(文件内容)的信息。
从逻辑上讲,这也解释了为什么在同一文件系统上移动的文件快速闪烁而复制需要很长时间。操作系统只需编辑 2 个目录块即可从一个目录(信息数据块)中删除条目并添加到另一个目录中。删除文件:只需删除目录块中的条目,释放要重新分配的文件数据块。
ps:仅仅因为卡片目录有书的条目并不意味着它在书架上(可能被检查或丢失);文件大小 0。
pps:图书馆里放错地方的书意味着搜索图书馆,或用计算机术语:chkdsk或修复磁盘!
通过阅读 UNIX inode 或了解版本控制系统(ClearCase、TFS、Git 等)不仅管理文件和目录,还管理文件版本甚至目录版本,可以更好地理解。在大多数情况下,所有内容都存储在数据库中并呈现给用户以显示为经典的目录结构和文件!
归档时间: |
|
查看次数: |
43084 次 |
最近记录: |