文件大小与占用空间大小(附带字节转KB,MB公式)

很多人一直在困惑,一个文件或文件夹属性中的“大小(Size)”和“占用空间(Size on disk)”通常不相互匹配。“大小”的值表示文件实际大小的字节数,而“占用空间”的值表文件占用硬盘空间大小的字节数。

这种差异来自文件系统在驱动器上存储的文件的方式。为了减少使用的地址数量,文件系统把一定数量的字节当成簇。根据不同的文件系统,常见的簇大小可以从2KB的到32KB。一个被写入到磁盘的文件需要占用若干个不相连的簇,而无论文件的实际大小。因此,一个1KB的文件,保存在一个簇大小为2KB的文件系统将占用2KB,但保存在一个簇大小为32KB的文件系统,它会占用32KB。也就是说,一个33KB的文件将占用17个2KB的簇(34KB)或2个32KB的簇(64KB)。

基于上述的讨论,你会期望占用空间的大小会比实际大小更大,但是多出的部分不会超过一个簇的大小。在查看一个有很多文件的文件夹时,这种差异可能会更大,因为每个单独文件浪费的空间加起来会体现在文件夹上。

简单地说,就是:“大小”是文件的实际字节数,而“占用空间”的是在磁盘上占用的字节数。

举例:

转换程序

时间: 2024-08-29 16:53:28

文件大小与占用空间大小(附带字节转KB,MB公式)的相关文章

JVM —— Java 对象占用空间大小计算

零. 为什么要知道 Java 对象占用空间大小 缓存的实现: 在设计 JVM 内缓存时(不是借助 Memcached. Redis 等), 需要知道缓存的对象是否会超过 JVM 最大堆限制, 如果会超过要设置相应算法如 LRU 来丢弃一部分缓存数据以满足后续内容的缓存 JVM 参数设置: 如果知道对象会被创建, 可以帮助判断 -Xmx 需要设置多少 只是为了好玩 一. 对象的内存布局 HotSpot 虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header).实例数据(Instan

Byte/KB/MB/GB 等字节单位换算

字节单位换算公式: 1 GB = 1024 MB 1 MB = 1024 KB 1 KB = 1024 Bytes 1 Byte = 8 bits 将字节单位转化为目标单位 根据公式我写了一段C++代码,用于将输入的以字节为单位的数值,转换为目标单位数值.代码中的枚举类型用的是C++11的语法. enum class Unit{ Byte, KB, MB, GB, TB, PB, EB }; double convert(double size, Unit unit) { double resu

快速查看SQL Server 中各表的数据量以及占用空间大小

快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(18) ,Data varchar(18) ,index_size varchar(18) ,Unused varchar(18) ) GO INSERT #T EXEC SP_MSFOREACHTABLE 'EXEC sp_spaceused "?"' SELECT * FROM #T O

如何查看表占用空间大小 .

如何查看表占用空间大小 --定义表变量Create TABLE T( [name]           VARCHAR(max), [rows]           INT, reserved         VARCHAR(max), data_size        VARCHAR(max), index_size       VARCHAR(max), unused           VARCHAR(max)) --将表占用情况存放到表变量INSERT INTO TEXEC sp_MSf

检测SQL Server表占用空间大小SQL

检测SQL Server表占用空间大小SQL,要先选择需要查询的数据库,然后点击执行下面脚本. CREATE TABLE #T (NAME nvarchar(200),ROWS char(11),reserved varchar(18) ,Data varchar(18) ,index_size varchar(18) ,Unused varchar(18) ) GO INSERT #T EXEC SP_MSFOREACHTABLE 'EXEC sp_spaceused "?"' SE

【转】Linux命令之查看文件占用空间大小-du,df

原文网址:http://blog.csdn.net/wangjunjun2008/article/details/19840671 du(disk usage),顾名思义,查看目录/文件占用空间大小 #查看当前目录下的所有目录以及子目录的大小$ du -h $ du -ah #-h:用K.M.G的人性化形式显示 #-a:显示目录和文件   du -h tmp du -ah tmp#只查看当前目录下的tmp目录(包含子目录)的大小 #查看当前目录及其指定深度目录的大小du -h –-max-dep

计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)

程序猿都非常懒.你懂的! java程序猿在实际的开发中会遇到非常多的单位换算问题.今天我给大家带来的是关于计算机硬盘大小的换算.多数情况下.一般要求b,kb,mb,gb,tb,pb之间的大小转换,我们都知道他们之间的换算是乘以1024或者除以1024.可是详细怎么用java代码来实现呢?请看以下的代码: package com.herman.utils; /*** * @see 存储大小(单位)转换器. * @author Herman.Xiong * @date 2014年5月27日 13:2

关于结构体占用空间大小总结(#pragma pack的使用)

关于C/C++中结构体变量占用内存大小的问题,之前一直以为把这个问题搞清楚了,今天看到一道题,发现之前的想法完全是错误的.这道题是这样的: 在32位机器上,下面的代码中 class A { public: int i; union U { char buff[13]; int i; }u; void foo(){} typedef char* (*f)(void*); enum{red , green, blue}color; }a; sizeof(a)的值是多少?如果在代码前面加上#pragm

取文件的大小 (KB,MB,GB...)

2种方式: VB 和 C# 1,  VB Public Function GetFileSize(ByVal iFileSizeKB As Long) As String Dim iFileSizeMB As Integer Dim iFileSizeGB As Integer If (iFileSizeKB >= 1024) Then iFileSizeMB = iFileSizeKB / 1024 If (iFileSizeMB >= 1024) Then iFileSizeGB = iF