Php 为什么我从“文件大小”中得到如此准确的结果?
当我运行此代码时:Php 为什么我从“文件大小”中得到如此准确的结果?,php,Php,当我运行此代码时: <?php $handle = fopen('/tmp/lolwut', 'w') or die("Cannot open File"); fwrite($handle, "1234567890"); fclose($handle); print_r(filesize('/tmp/lolwut')); ?> 我得到结果10,这是文件中正确的字符数 但是,由于文件系统块比这个大得多,我希望文件大小“向上舍入”到512字节甚至1KB。为什么不呢?不要将
<?php
$handle = fopen('/tmp/lolwut', 'w') or die("Cannot open File");
fwrite($handle, "1234567890");
fclose($handle);
print_r(filesize('/tmp/lolwut'));
?>
我得到结果10
,这是文件中正确的字符数
但是,由于文件系统块比这个大得多,我希望文件大小“向上舍入”到512字节甚至1KB。为什么不呢?不要将“文件大小”与“磁盘上的文件大小”混淆;给你的是前者,不是后者
虽然没有明确的文档说明,但是基本上是根据stat
实现的filesize
,并且在Linux上:
所有这些系统调用都返回一个stat
结构,其中包含以下字段:
struct stat {
// [...]
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
// [...]
};
您期望的值是st_blocks*st_blksize
,但不管怎样,“true”filesizest_size
都是可用的
()这个问题是为解决这个问题而设计的。对于com来说,这个问题很好。维基,但是1。你的链接与这个问题有什么关系?(关于缓存)和2。为什么
filesize
返回的大小比文件使用的小,这不是一个更好的标题吗?还是类似的?@dtech:这是一个评论链接。阅读评论。可能是一个社区维基问题?没有必要强迫这是一个CW,也没有必要拒绝承认某人的辛勤工作。也就是说,我建议保留这个问题,这似乎不像有人会真正问的那样。我的建议是“为什么filesize
与磁盘上的文件大小不一致?”