文件的实际大小是多少?

时间:2019-03-05 18:31:36

标签: file operating-system

文本文件如何具有等于内部字符数的大小?例如,在file.txt中,您有字符串“ abc”,其大小为3个字节。一切都很好,但是文件图标,文件名和文件信息又如何呢?这些数据存储在哪里?

我在Windows上进行了检查,但在Unix系统上情况却一样。

2 个答案:

答案 0 :(得分:0)

将文件写入磁盘时,它是通过write()之类的低级系统调用来完成的,操作系统确切知道它们在磁盘上给定文件中写入多少字节。该信息以及其他一些信息(创建和修改日期,所有权等)都与文件一起写入。

在linux(通常是unix)中,它是通过inode来完整描述文件的。存储在这些inodes中的信息是:
*访问模式
*拥有文件的用户和组的ID
*大小以字节为单位
*创建,修改和访问的日期
*包含文件数据的磁盘块列表

这些或多或少是ls -l

显示的信息

您还可以使用ls -i

查看每个文件的索引节点号

您可以在索引节点上找到here的其他详细信息。

其他信息的编码方式不同。例如,名称仅在描述目录的特殊文件中,而不在inode中。目录确实是将名称与inode关联的列表。

图标通常在系统范围内定义,并且图标与文件的关联是通过文件名(和文件扩展名)或以“ inode”(或等同于其他操作系统)。

答案 1 :(得分:0)

磁盘以块为单位分配空间。块历史上是512字节,但随着时间的推移,块已增加,因此4K很常见。您的文件大小将始终是块大小的倍数。

大多数文件系统(Windoze会这样做)在群集中分配磁盘空间。集群是许多相邻的块。这样,文件大小将始终是块大小乘以群集因子的倍数。通常是操作系统计算得出的文件大小。

这全部取决于磁盘格式和操作系统:

  

一切都很好,但是文件图标,文件名和文件信息又如何呢?这些数据存储在哪里?

文件信息(日期,所有者等)通常在某种主文件表中。有时,此表将具有可存储信息的扩展名。安全信息通常存储在此类溢出中。

一个合理设计的文件系统将在头文件中存储“ A”文件名。文件名也存储在目录中,如果文件链接到多个目录,则文件可以有多个名称。头文件名用于在损坏的情况下还原文件。

图标的位置完全是系统特定的,可以通过多种方式完成。对于可执行文件,它们通常存储在文件本身中。它们也可以是同一目录中的隐藏文件。