文本文件如何具有等于内部字符数的大小?例如,在file.txt中,您有字符串“ abc”,其大小为3个字节。一切都很好,但是文件图标,文件名和文件信息又如何呢?这些数据存储在哪里?
我在Windows上进行了检查,但在Unix系统上情况却一样。
答案 0 :(得分:0)
将文件写入磁盘时,它是通过write()
之类的低级系统调用来完成的,操作系统确切知道它们在磁盘上给定文件中写入多少字节。该信息以及其他一些信息(创建和修改日期,所有权等)都与文件一起写入。
在linux(通常是unix)中,它是通过inode
来完整描述文件的。存储在这些inodes
中的信息是:
*访问模式
*拥有文件的用户和组的ID
*大小以字节为单位
*创建,修改和访问的日期
*包含文件数据的磁盘块列表
这些或多或少是ls -l
您还可以使用ls -i
您可以在索引节点上找到here的其他详细信息。
其他信息的编码方式不同。例如,名称仅在描述目录的特殊文件中,而不在inode中。目录确实是将名称与inode
关联的列表。
图标通常在系统范围内定义,并且图标与文件的关联是通过文件名(和文件扩展名)或以“ inode
”(或等同于其他操作系统)。
答案 1 :(得分:0)
磁盘以块为单位分配空间。块历史上是512字节,但随着时间的推移,块已增加,因此4K很常见。您的文件大小将始终是块大小的倍数。
大多数文件系统(Windoze会这样做)在群集中分配磁盘空间。集群是许多相邻的块。这样,文件大小将始终是块大小乘以群集因子的倍数。通常是操作系统计算得出的文件大小。
这全部取决于磁盘格式和操作系统:
一切都很好,但是文件图标,文件名和文件信息又如何呢?这些数据存储在哪里?
文件信息(日期,所有者等)通常在某种主文件表中。有时,此表将具有可存储信息的扩展名。安全信息通常存储在此类溢出中。
一个合理设计的文件系统将在头文件中存储“ A”文件名。文件名也存储在目录中,如果文件链接到多个目录,则文件可以有多个名称。头文件名用于在损坏的情况下还原文件。
图标的位置完全是系统特定的,可以通过多种方式完成。对于可执行文件,它们通常存储在文件本身中。它们也可以是同一目录中的隐藏文件。