如何在PHP中获取特定文件的磁盘大小?
echo filesize("test.txt");
//Size 100 KB (102,836 bytes)
但是在磁盘上我有:
Size on Disk 104 KB (106,493 bytes)
如何使用 PHP 获取磁盘大小?
听起来您只是想取filesize()
返回的结果并四舍五入到最接近的 1024 的倍数(或任何驱动器的块大小(。以下是将最接近的 X 四舍五入的几种方法: 在 PHP 中向上舍入到最接近的 5 的倍数
要实现这一点,你需要使用 PHP 内置的 stat(( 函数。 filesize(( 只会返回文件的实际大小,有时可能比磁盘上的大小小得多(例如,如果您的块大小为 4096KB,而文件只有 1KB,那么您在磁盘上的大小将为 4096KB 对于 1KB 的文件(。我们特别感兴趣的是stat()
返回的以下数组键:
块 - 分配的 512 字节块数 **
因此,我们只需要从数组中获取blocks
键并将其乘以 512。您可以在下面看到不同的输出(基于 4096KB 块大小系统上的 5968KB 文件(:
echo filesize('test.txt');
echo stat('test.txt')['blocks'] * 512;
在我的机器上将返回:
5968
8192
这是因为我的块大小为 4096KB。我的文件是 5968KB,因此需要分配 2 个 4096KB 块。这相当于 16 个 512K 块,因此这就是我们如何获得正确的磁盘大小值。
如果您有兴趣,还可以使用以下数组键找到您的系统块大小stat()
返回:
blksize - 文件系统 IO 的块大小 **
但是请注意,如果您在Windows服务器上,则根据以下文档中的说明,这将不起作用:
** 仅在支持 st_blksize 类型的系统上有效 - 其他系统(例如 Windows(返回 -1。
根据 http://php.net/manual/en/function.filesize.php
int filesize ( string $filename )
应该有效
喜欢:
$filename = "path/to/file";
$size = filesize($filename);