如何在PHP中获取特定文件的磁盘大小?
echo filesize("test.txt");
//Size 100 KB (102,836 bytes)
但在磁盘上我有:
Size on Disk 104 KB (106,493 bytes)
如何使用PHP获取磁盘大小?
答案 0 :(得分:0)
听起来您只想获取filesize()
返回的结果并向上舍入到最接近的1024的倍数(或者您的驱动器的块大小)。以下是几种舍入最近的X的方法:Round up to nearest multiple of five in PHP
答案 1 :(得分:0)
要实现这一点,您需要使用PHP内置的stat()函数。 filesize()只返回文件的实际大小,有时可能比磁盘大小要小很多(例如,如果你的块大小是4096KB而你的文件只有1KB,那么你的磁盘大小就会1KB文件为4096KB)。我们特别感兴趣的是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。
答案 2 :(得分:-1)
根据http://php.net/manual/en/function.filesize.php
$filename = "path/to/file";
$size = filesize($filename);
应该有效
像:
library(ggplot2)
library(magick)
library(here) # For making the script run without a wd
library(magrittr) # For piping the logo
# Make a simple plot and save it
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point() +
ggtitle("Cars") +
ggsave(filename = paste0(here("/"), last_plot()$labels$title, ".png"),
width = 5, height = 4, dpi = 300)
# Call back the plot
# Now call back the plot
background <- image_read(paste0(here("/"), "Cars.png"))
# And bring in a logo
logo_raw <- image_read("https://i.imgur.com/e1IneGq.jpg")
frames <- lapply(logo_raw, function(frame) {
image_composite(background, frame, offset = "+70+800")
})
animation <- image_animate(image_join(frames))
image_write(animation, "~/Cars_Travolta.gif")