精华内容
下载资源
问答
  • 本文拿windows系统举例,先看几张图: ... 图3 文件大小比占用空间大(而且相差较) 上面3张图展示了文件大小与占用空间的大小几种情况,前两种场景是比较常见的情况,之所以有时文件大小会比占用空间小...

    本文拿windows系统举例,先看几张图:

                             图1   文件大小比占用空间小

                          图2 文件大小跟占用空间大小一致

               图3 文件大小比占用空间大(而且相差较大)

    上面3张图展示了文件大小与占用空间的大小几种情况,前两种场景是比较常见的情况,之所以有时文件大小会比占用空间小时因为簇大小的限制,簇代表了可以分配用来保存文件的最小磁盘空间量,笔者存放sparse.txt文件所在区簇的大小为4096字节,图1中文件大小为4096字节(可以使用chkdsk命令查看),所以5K的文件需要2个簇来存储,如下图所示:

    图2所示文件大小为5M,5M正好是4096的整数倍,所以文件大小跟占用空间大小一样大。

    下面重点说下第三种情况,这里涉及到稀疏文件问题,对于不支持稀疏文件的系统就不会出现这种情况,看个例子:

    /**
         * 常规文件可能会有很多不必要的空间浪费
         * @throws IOException
         */
        @Test
        public void normalFile() throws IOException {
            File file = new File("d:/tmp/sparse.txt");
            Path path = file.toPath();
            FileChannel ch = FileChannel.open(path, StandardOpenOption.CREATE,StandardOpenOption.WRITE);
            ch.position(5*1024*1024L);
            ch.write(ByteBuffer.wrap("hello world".getBytes("utf-8")));
            ch.close();
    
        }
    
        /**
         * 稀疏文件模式
         * @throws IOException
         */
        @Test
        public void sparseFile() throws IOException {
            File file = new File("d:/tmp/sparse.txt");
            Path path = file.toPath();
            FileChannel ch = FileChannel.open(path, StandardOpenOption.SPARSE,StandardOpenOption.CREATE_NEW,StandardOpenOption.WRITE);
            ch.position(5*1024*1024L);
            ch.write(ByteBuffer.wrap("hello world".getBytes("utf-8")));
            ch.close();
        }

    PS:

    1、StandardOpenOption.SPARSE要跟StandardOpenOption.CREATE_NEW模式配合使用,不能跟StandardOpenOption.CREATE模式配合,文件占用空间大小将不会按照稀疏文件的方式处理

    2、感兴趣的可以试下StandardOpenOption.SPARSE要跟StandardOpenOption.CREATE配合的情况,注意测试前要删除测试用到的文件

     

    参考文章:

    1、https://product.pconline.com.cn/itbk/software/dnyw/1703/8961027.html

    展开全文
  • Windows系统中文件大小和占用空间不同的原因解析 1.“文件大小”与“所占空间”的差别  为了便于大家理解,我们先来看两个例子: 例1:找到D盘上的Ersave2.dat文件,用鼠标右键单击该文件,选择“属性”,即可...

    Windows系统中文件大小和占用空间不同的原因解析

    1.“文件大小”与“所占空间”的差别
         为了便于大家理解,我们先来看两个例子:
    例1:找到D盘上的Ersave2.dat文件,用鼠标右键单击该文件,选择“属性”,即可打开对话框,我们可以看到,Ersave2.dat的实际大小为655,628 Byte(字节),但它所占用的空间却为688,128 Byte,两者整整相差了32KB。
    例2:同样是该文件,如果将它复制到A盘,你会发现该文件实际大小和所占空间基本一致,同为640KB,但字节数稍有差别。再将它复制到C盘,查看其属性后,你会惊奇地发现它的大小和所占空间的差别又不相同了!
    显然,在这三种情况中,文件的实际大小没有变化,但在不同的磁盘上它所占的空间却都有变化。事实上,只要我们理解了文件在磁盘上的存储机制后,就不难理解上述的三种情况了。文件的大小其实就是文件内容实际具有的字节数,它以Byte为衡量单位,只要文件内容和格式不发生变化,文件大小就不会发生变化。但文件在磁盘上的所占空间却不是以Byte为衡量单位的,它最小的计量单位是“簇(Cluster)”。
     小知识:什么是簇?
           文件
    系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容因此文件实际所占用的物理空间大小,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。 
    2.分区格式与簇大小
           在例2中,同一个文件在不同磁盘分区上所占的空间不一样大小,这是由于不同磁盘簇大小不一样导致的。簇的大小主要由磁盘的分区格式和容量大小来决定。笔者的软盘采用FAT分区,容量1.44MB,簇大小为512 Byte(一个扇区);C盘采用FAT 32分区,容量为4.87GB,簇大小为8KB;D盘采用FAT 32分区,容量为32.3GB,簇大小为32KB。计算文件所占空间时,可以用如下公式:
    簇数=取整(文件大小/簇大小)+1,所占空间=簇数×磁盘簇大小
    公式中文件大小和簇大小应以Byte为单位,否则可能会产生误差。如果要以KB为单位,将字节数除以1024即可。利用上述的计算公式,可以计算ersave2.dat文件的实际占用空间。
     3.轻松查看簇大小
    ①用Chkdsk查看簇大小
    在Windows操作系统中,我们可以使用Chkdsk命令查看硬盘分区的簇大小。例如我们要在Windows XP下查看C盘的簇大小,可以单击“开始→运行”,键入“CMD”后回车,再键入“C:”后回车,然后输入“Chkdsk”后回车,稍候片刻从它的分析结 果中,我们就可以得到C盘的簇大小,不过它把簇称之为“分配单元”或者“Allocation unit”。
    ②用PQ Magic等磁盘工具来检测
    很多磁盘工具都具备磁盘信息显示等功能。例如在PQ Magic中,选择要查看的磁盘分区,然后单击右键选择“高级→调整簇大小”功能,即可从显示的对话框中可以看到该磁盘当前设置的簇大小。
    ③手工查看
    手动创建一个100字节以下的文本文档。然后将该文件复制到欲查看簇大小的磁盘分区中,在Windows下显示该文件的属性,其中“所占空间”处显示的数值就是簇大小。 
    以下说明一下文件大小和占用空间大小不同的相关解释:
            首先说明一下,文件的大小和其所占用的空间存在一定的差异是肯定的,这个现象起始的原因就是因为系统的文件和索引,为了方面系统更便捷的管理文件,操作系统使用文件系统对各种文件进行管理(文件系统就是我们经常说的FAT32和NTFS等),文件系统将硬盘分为很多个“簇”。 
          以FAT32文件系统为例,fat32文件系统的簇大小是4KB。当我们要存储一个1KB的文件,那么它将占用4KB的空间,要存储2KB的文件,所占用的文件大小也是4KB,而要存储2个2KB大小的文件时,其所占用的空间就为8KB。以此类推。
          所以,当我们存储非常多的小文件的时候,其所占用的空间就越大,但很可能其实际的文件大小却很小,也就是这个道理。同理,一个文件越大,其占用的空间也就越小。 
          说简单一点,拿仓库做比方,我们有100个仓库,为了好管理和查找,我们可能会把各种不同的物品分别放入不同的仓库,但是这个物品很可能不能填满仓库,那么它仍然也是占用了仓库的所有空间的。那么可能有人问了,为什么不把这个仓库多放东西,好节约空间,但是这样的话很可能你找很久久没有办法找到你所要的东西,其性能就非常低了。同理文件存储也是这个道理。

    展开全文
  • 0. 文件大小与占用空间文件大小”和“占用空间”的差别首先需要明确的是,“文件大小”代表着文件的真实大小(文件内容实际包含的全部字节数),“占用空间”往往略大于“ 文件大小”,如下图所示: “占用空间...

    0. 文件大小与占用空间

    “文件大小”和“占用空间”的差别

    首先需要明确的是,“文件大小”代表着文件的真实大小(文件内容实际包含的全部字节数),“占用空间”往往略大于“ 文件大小”,如下图所示:


    这里写图片描述

    “占用空间”表示为计算机磁盘为存储该文件,所需分配的存储空间,显然“占用空间”必须不小于“文件大小”。事实上,windows 采用 NTFS 和 FAT 的文件系统管理磁盘文件,所有文件系统都是基于簇(分配单元)为大小,即文件在磁盘上的所占空间不再以 Byte 为衡量单位,最小计量单位是“簇(Cluster)”。

    1. 磁盘分区与文件系统及簇大小的查看

    windows 下使用 Chkdsk(check disk)来查看文件系统类型以及簇大小。

    首先以管理员权限运行 cmd,在命令行输入 Chkdsk,即可在只读模式检查本地文件系统。检测结束得到的分析结果中,“分配单元”或者“Allocation unit”即表示簇的大小。

    2. 为什么单个大文件比总体积相同的多个小文件复制起来要快很多?

    将一个1GB大小的文件分割为 1024 个 1MB 大小的文件快,拷贝的效率要远低于直接拷贝 1 GB 大小的整个块。

    从源到目的,复制一个文件需要做的有1-3步:

    • 1、在目标位置创建对应的文件名项,因为文件名也是要保存在磁盘上的;
    • 2、如果文件有内容,把文件内容写入磁盘,并按照块对齐(512字节-64K不等)
    • 3、如果文件有内容,在一个特定的位置把文件内容的块的信息记录下来,标记这些块属于这个文件并且是被使用了

    对于1G的文件,需要的也是这三步,对于1024个1M的文件,需要的是 1024×3 步。对于磁盘设备有IOps的概念,就是每秒能执行的 I/O 次数,对于复制1024个1M文件来说,那么至少需要1024*3次 I/O,对于1G的文件来说,至少需要3次。所以从次数来说,复制小文件越多,磁盘读写次数越多,虽然有 cache 等一系列优化的机制,但整体次数还是要高很多的。并且,磁盘写1字节,和写512字节(一个扇区)的代价是相同的,虽然写入文件名短,但仍然需要写入512字节(一个扇区)。因此写1G文件就至少要比写1024*1M文件多写512K这么多数据。如果说512K这么多数据好像也不太多,但还有一个不可忽略的操作就是比较文件名:复制文件的时候,需要判断是否有重名,复制1个文件,检查1次就可以了,复制1024个文件,就需要检查1024次,并且随着文件的增多,检查的负担也越重(要跟之前的文件都检查一下)。

    所以总结下来有三点:

    • 1、小文件导致IO次数增多,磁盘IO次数本身就有瓶颈;
    • 2、小文件实际写入的内容也更多(这里我没包括索引项,实际索引项也很多,但不好表达);
    • 3、小文件导致CPU负担更重,需要匹配更多的信息。

    以上三点造成了小文件复制比大文件慢,所有操作系统的所有文件系统基本上都有以上三个原因。

    展开全文
  • 如何查找占用空间大文件或目录

    千次阅读 2019-08-24 17:57:41
    将目录下各个文件按照占用空间排序,这样可以方便的得到占用空间最大的文件或目录。 命令: du -sm /XXX/* | sort -nr 以MB为单位计算占用空间,并按照占用空间进行排序。 例如, du -sm /docker/opt/logs/logs/*...

    当发现系统磁盘空间满的时候,最想知道的就是哪些大文件把空间用完了。
    本文提供两种查找大文件的方法。

    1. 按照占用空间大小排序

    将目录下各个文件按照占用空间排序,这样可以很方便的得到占用空间最大的文件或目录。
    命令:

    du -sm   /XXX/* | sort -nr
    

    以MB为单位计算占用空间,并按照占用空间进行排序。

    例如,

    du -sm /docker/opt/logs/logs/* | sort -nr
    5854	/docker/opt/logs/logs/core
    284	/docker/opt/logs/logs/a_agent
    157	/docker/opt/logs/logs/a-service
    51	/docker/opt/logs/logs/b_agent
    50	/docker/opt/logs/logs/cplugin
    40	/docker/opt/logs/logs/d_agent
    11	/docker/opt/logs/logs/orange
    

    这样,就可以很容易的看到哪些文件或目录占用空间大,哪些文件或目录占用空间小。
    一级一级找下去,就能找到。

    2.查找超过指定大小的文件

    查找100M以上的文件

    find /XXXX -type f -size +100M 
    

    例如,查找workspace目录下,大于10M的文件

    find  ./workspace -type f -size +10M 
    workspace/go_projects/bin/go-callvis
    workspace/go_projects/bin/govendor
    workspace/go_projects/bin/dep
    
    展开全文
  • 3、进入占用空间比较的文件夹,然后再使用2中命令查找大文件。 du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的...
  • 文件大小和占用空间的区别

    万次阅读 2019-06-14 16:05:06
    查看文件属性,发现有“文件大小”和“占用空间”两个内容,而且两者之间的差距很大,见下图: 上图可知文件大小是2.54GB,而占用空间是18.2GB,差了不到16个G。 Windows会使用NTFS和FAT的文件系统管理磁盘文件...
  • WindowsApps目录占用大量空间

    千次阅读 2020-03-20 17:27:14
    Windows 10的电脑100G的C盘空间几乎耗尽。但是选取所有文件后总大小只有不到40G。按常规,肯定是有一些没有权限的文件夹的体积没有统计进去。首先就是System Volume Information文件夹造成的。结果获取了权限后,...
  • WIN10系统C盘占用文件实际大小不一致。【差20G找不到】  ... C盘右键属性显示“已占用54.4G空间,但我进到C盘,勾选所有文件(包括隐藏文件),显示大小只有35G。 那么,20G去哪里了?   另外,电脑...
  • 文件大小”和“占用空间”的区别

    万次阅读 多人点赞 2017-11-27 19:37:32
    前言:  今天再拷贝文件的时查看文件属性,发现有“文件大小”和“占用空间”两个内容,而且两者之间的差距很大,见下图:    上图可知文件大小是2.54GB,而占用空间是18.2GB,差了不到16个G。
  • 应该不止我一个人往SSD移动硬盘中安装软件,但是exFAT的默认的簇大小可能会导致占用空间文件本身大很
  • http://hi.baidu.com/frjay/blog/item/13cccbd5bab801cc50da4b73.html查看盘符簇大小的命令:fsutil fsinfo ntfsinfo F:文件大小与占用空间大小不同的原因1."文件大小”与“所占空间”的差别 为了便于大家理解,我们...
  • 最近使用windows server服务器,长时间运行后,发现磁盘空间越来越小,删除用户下的temp文件夹,空间少了一部分,但是还是占用很空间。最后查找发现是在 C:\Users\administrator\AppData\Local\Microsoft\Windows...
  • 文件大小为什么和占用空间不一样? 原文来自:http://www.cnblogs.com/crazycxy/archive/2011/07/12/2104013.html 文件大小和占用空间为何不一样  细心的朋友也许都注意过,一个文件,无论存储在...
  • 比如这个个性化设置界面,变化就非常,我相信经常使用Windows10的小伙伴们一眼都能看出来。 但是对于C盘空间小的朋友们来说,另一个发现可能让大家有些不安,细心的朋友会发现,在C盘根目录下多了...
  • 本地存储-系统和保留-系统文件占用存储空间的解决方式 博主笔记本最近新装系统后,发现系统和保留中系统文件占了300+G,导致我仅有的C盘只有100+G的存储空间,这肯定是万万不行的,网上看了很多人的回答,都没有...
  • Win10 C盘 系统和保留 占用空间 非常

    万次阅读 多人点赞 2019-01-10 09:12:34
    Win10 C盘 系统和保留 占用空间 非常 今天在写代码的时候,突然发现Redis起不来了,一看原因,是因为C盘空间不足。然后,我看了下C盘,发现。。。 一个叫系统和保留的东西,居然占了110G的空间。难怪Redis起不来。...
  • 在视频编码领域,比特率常翻译为编码率,单位是Kbps,例如800Kbps 其中, 1K=1024 1M=1024Kb为比特(bit)这个就是电脑文件大小的计量单位,1KB=8Kb,区分小写,B代表字节(Byte) s 为 秒(second)p 为 每(per),...
  • du命令用来查看目录或文件占用磁盘空间的大小。常用选项组合为:du -sh 查看当前文件夹的大小 一、du的功能: `du` reports the amount of disk space used by the specified files and for...
  • windows更新占用内存

    千次阅读 2018-04-17 11:32:36
    新电脑的系统占用很大的内存。 下图是我进行过windows更新后的内存占用情况,sychos.exe windows主服务只占用了15M。 但是没有进行更新之前sychos.exe占用的内存是eclipse的5倍,直接让电脑卡死。相当于开了5个...
  • 对于占用空间的没有成品代码。(ps:我没找到。)后来,在网上找了些资料,自己捣鼓出来了。在这里记录下,一则说不定以后能用到。再则如果有高手有更好的方法或者建议,求指点。  废话不多说了。begin。  ...
  • Windows版Redis启动后,会在C盘自动创建一个很大的缓存文件,C:\Users\{你的用户名}\AppData\Local\Redis\RedisQFolk_****.dat,一个大概就有7G左右,如果系统异常关闭,还会再新建一个差不多大小的缓存文件,之前的...
  • 文件大小与占用空间是不...但是这种方法无法获取文件占用空间,尤其是包含大量小文件时,相差很大; 在Linux中,使用shell结合正则表达式获取文件夹占用大小,示例代码如下:   __author__ = 'weiran' import...
  • 虚拟磁盘文件占用空间会越来越,就算从客户机里面删除了多文件,但这些空间并未释放出来,qcow2文件仍然占用大量的主机存储空间。 虽然qcow2有一个特点,客户机需要时才分配存储空间,这工作的一直好。但是当...
  • docker占用C盘空间

    千次阅读 2019-09-13 18:39:24
    扫描发现占用空间最大的文件是:C:\ProgramData\DockerDesktop\DockerDesktop.vhdx 解决方法:右键Docker Desktop 运行图标 --> Settings --> Advanced -->Disk image location -->点击browse –修改...
  • Redis占用C盘,Windows Redis,64位Windows版Redis疯狂占用C盘空间,redis启动后创建RedisQFolk_****.dat文件,redis-server.exe redis.windows.conf,分页文件,AppData\Local\Redis,heapdir,maxheap ,转移到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,313
精华内容 52,525
关键字:

windows文件占用空间很大