Thankwsx's Diary

File System

November 25, 2018

看起来很简单nodejs的fs模块,读取文件大小,读取目录下文件列表等等,但实际操作起来可不是那么回事啊。 写了一个简单的小程序,查看某指定文件夹的大小及占用空间,遇到各种实际的问题。

  1. 没有权限,windows系统中有些目录没有权限访问,所以程序得处理这种情况;
  2. 所有文件占用的空间单位是以4k为单位增加的,小文件也会占用4k的空间,所以会出现大小比占用空间小很多的情况,问题是,4k是磁盘文件系统格式的设定,nodejs没办法读取到这个值,chkdsk命令执行也需要权限,姑且认为默认都是4k好了;
  3. 很小的文件,比如只有几十或上百个字节的文件,占用空间会是0,什么原因?因为没什么内容的文件,直接以内联存储的模式将内容存储了,所以不占用额外的空间。具体规则应有专门的标准描述,没再仔细追查下去;
  4. nodejs同时打开的文件句柄不能过多,需要进行句柄数限制,否则会报错;
  5. 右键查看文件夹属性的大小和占用空间与全选文件夹下所有文件及文件夹查看属性的大小和占用空间不完全一致,原因未明,导致工作基本没法进行下去了,怀疑是否和快捷链接有关系。

以上种种都是超出fs文档之外的原因,一个具体的产品实施过程中有着许多意想不到的难度,这个是值得在以后的工作中持续关注的了。