首页 > 其他分享 >关于文件系统在创建目录文件和普通文件时的区别

关于文件系统在创建目录文件和普通文件时的区别

时间:2024-04-24 18:13:39浏览次数:20  
标签:文件大小 文件 文件系统 https total 目录 block

在上一篇探究linux解释器时同样涉及到了一些其他问题

比如为什么在ls -lh时目录的大小都是4.0k?

 之前想过可能是最小或者最大只能显示出4.0k的,但是就如上图显示的,这两种都是不可能的

直到我在使用stat命令查看文件大小时忽然想到,用这个命令能不能查看文件夹的大小?

然后发现还真能,但是也是4.0k

 于是我开始想,难不成这个文件夹真的就是4.0k这么大?但是这是为什么?

后来发现自己还是windows用多了,下意识就以为文件夹的大小就应该是整个文件夹中所有文件的大小加和

而实际上呢,这个目录本身也是一个文件,而我们这些查看文件大小的命令查看的就是这个目录本身的文件大小,而不是目录下包含的文件大小总和

那为什么所有目录文件的大小都是4k呢

通过这两篇文章:

https://cloud.tencent.com/developer/ask/sof/211345

https://www.cnblogs.com/iiiiher/p/8511351.html

我们可以得知在创建文件时,系统会给这个文件分配一个叫inode(索引节点)的东西,这个inode会指向一个block,这个block就是实际存文件的地方

这个block我觉得挺好理解的吧

参考这个:https://blog.csdn.net/jialexiao/article/details/71124930

大概就是数据的存放是一块一块的,而这个块的大小我们这里默认是4096也就是4k,在创建文件时自动会给inode指向一个block,而目录文件又不会再写入什么的(还真不太一定哈,稍后研究研究),所以我们就会看到目录文件都是统一的4k大小

但是如果是这样的话那不就和一开始的猜想之一一样了吗,即“最小的文件大小就是4k”,而我们能够很明显地看到小于4k的文件大小是可以正常显示的

 那么这里的区别还是回到了普通文件和目录文件的区别在哪

本来找了半天没找到,结果最后发现自己找错方向了

参考这篇文章:https://blog.csdn.net/dangpu/article/details/40020801

在创建空文件时是不会分配block的,只会分配一个inode,而创建文件夹时会同时分配block和inode

上面提到的文章还讲了关于这个block还有一个东西就是在使用ls -l时,上面显示的这个total是什么东西

还看到有人说block是4K,total是block的个数,所以total可以是0,1,2,3...等正整数的,这个其实非常好验证,我试了一下

 可以看到ls -lh时显示文件的大小只有2,但是total却是4.0K

这里还发现件事,就是这个total是根据你当前实际显示出的文件来计算的,比如如果加上了-a,那么这个total就会增加

看起来似乎是把这两个目录.和..也计算上了

参考:

https://www.cnblogs.com/xumenger/p/4491425.html

https://zhuanlan.zhihu.com/p/73437944

https://blog.csdn.net/qq_42759112/article/details/126249990

https://blog.csdn.net/jialexiao/article/details/71124930

标签:文件大小,文件,文件系统,https,total,目录,block
From: https://www.cnblogs.com/theskyforfly/p/18155841

相关文章

  • 修改文件内容 python
    第一种方法,简单直接粗暴的,缺点就是如果文件非常大时,把所有内容都读出来,会非常占用内存:f=open('a.txt','a+',encoding='utf-8')#不能用w+,用w+直接给文件清空了,读不出来内容了f.seek(0)result=f.read()new_result=result.replace('abc','ABC')f.seek(0)f.truncate......
  • linux命令从log文件中找出404 或者500的所有报错信息?
     你可以使用grep命令结合正则表达式来找出包含"404"或"500"的所有报错信息,并显示这些行的内容。以下是示例命令:grep-E'404|500'/path/to/logfile.log这个命令会在指定的日志文件/path/to/logfile.log中查找包含"404"或"500"的所有行,并将这些行显示出来。g......
  • 处理文件的小工具
    处理文件的小工具背景在实际工作中,我们经常需要处理一些文件,比如过滤一些log,找到一批文件中的特定数据等。为了提高工作效率以及灵活性,编写一个小工具来简化这些操作。主要针对程序员,自己可以动态调整方法,这里是一个框架,记录一下,省的以后用的时候找不到了。实现利用委托deleg......
  • ELF文件格式解析器 原理 + 代码
    参考:https://bbs.kanxue.com/thread-259901.htm写在前面:   读《Linux二进制》,发现作者对ELF文件格式部分并没有做详细介绍,为了加深对elf文件格式理解,我自己着手写了个解析器,会和readelf工具协同对比。 原理:  ELF文件(目标文件)格式主要三种:1.可重定向文件(Re......
  • 18--Scrapy04--CrawlSpider、源码模板文件
    Scrapy04--CrawlSpider、源码模板文件案例:汽车之家,全站抓取二手车的信息来区分Spider和CrawlSpider注意:汽车之家的访问频率要控制一下,要不然会跳验证settings.py中设置DOWNLOAD_DELAY=3一、常规Spider#spiders/Ershou.pyimportscrapyfromscrapy.linkextra......
  • HarmonyOS 实战开发-Worker子线程中解压文件
    介绍本示例介绍在Worker子线程使用@ohos.zlib提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表。效果图预览使用说明点击解压按钮,解压test.zip文件,显示解压结果。实现思路在/src/main/ets/workers目录......
  • 鸿蒙开发实战:【文件管理】
    介绍本示例主要展示了文件管理相关的功能,使用[@ohos.multimedia.medialibrary]、[@ohos.filemanagement.userFileManager] 、[@ohos.fileio] 、[@ohos.file.fs]、[@ohos.app.ability.contextConstant]等接口,实现了增添文件、删除文件、查找指定类型文件文件、复制并移动文件、......
  • 变更文件所属用户及组
    基础知识: 在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文件的拥有者及用户组。在Linux中,对于文件的权限(rwx),分为三部分,一部分是该文件的拥有者所拥有的权限,一部分是该文件所在用户组的用户所......
  • python之读取ini文件
    #ini文件[web_config]#前台ldap登陆:login_name=ut251login_pwd=wanghu123读取ini文件内容defread_config(section,key):try:config=configparser.ConfigParser()#类实例化#ini文件路径config_path=os.path.join(product_path,......
  • composer update 依赖文件没有任何问题,依然报错it could not be found in any version
    一、报错案例composerupdate或者composerinstallcomposer.json依赖文件没有任何问题,依然报错itcouldnotbefoundinanyversion 二、解决主要就是切换镜像源:composerconfig-grepo.packagistcomposerhttps://packagist.org之后再执行composerinstall即可!......