为什么我得不到文件的大小呢?

来源:2-4 文件信息相关函数封装

雨之赞歌

2019-02-13 16:00:05

http://img.mukewang.com/climg/5c63ce6a0001fa2e12270889.jpg

写回答

3回答

好帮手慕查理

2019-02-13

您好,并不是没有得到文件大小,文件大小在输出文件相关信息之前已经输出了。而在数组中之所以看不到是因为trans_byte方法是将文件大小echo输出,应该是将值进行return,返回给size设值。

<?php
/*返回文件的详细信息
*string $filename 文件名
*/
function get_file_info(string $filename){
   //判断文件是否存在或文件是否可读,不存在或不可读则终止
   if (!is_file($filename) || !is_readable($filename)){
       echo "文件不存在或不可读取";
       return;
   }
   print_r([
       //文件的最后访问时间
       'atime'=>date('Y-m-d H:i:s',fileatime($filename)),
       //文件的修改时间
       'mtime'=>date('Y-m-d H:i:s',filemtime($filename)),
       //文件的创建时间
       'ctime'=>date('Y-m-d H:i:s',filectime($filename)),
       //文件的大小
       'size'=>trans_byte(filesize($filename)),
       //文件的类型
       'type'=>filetype($filename)
   ]);
}
get_file_info('1.txt');
function trans_byte(int $byte,$precision=2){
   $kb=1024;
   $mb=1024*$kb;
   $gb=1024*$mb;
   $tb=1024*$gb;
   if ($byte<$kb){
       return $byte.'B';
   }elseif ($byte<$mb){
       return round($byte/$kb,$precision).'KB';
   }elseif ($byte<$gb){
       return round($byte/$mb,$precision).'MB';
   }elseif ($byte<$tb){
       return round($byte/$gb,$precision).'GB';
   }else{
       return round($byte/$tb,$precision).'TB';
   }
}

祝学习愉快!

0

雨之赞歌

提问者

2019-02-13

/*返回文件的详细信息
*string $filename 文件名
*/

function get_file_info(string $filename){
   //判断文件是否存在或文件是否可读,不存在或不可读则终止
   if (!is_file($filename) || !is_readable($filename)){
       echo "文件不存在或不可读取";
       return;
   }
   print_r([
       //文件的最后访问时间
       'atime'=>date('Y-m-d H:i:s',fileatime($filename)),
       //文件的修改时间
       'mtime'=>date('Y-m-d H:i:s',filemtime($filename)),
       //文件的创建时间
       'ctime'=>date('Y-m-d H:i:s',filectime($filename)),
       //文件的大小
       'size'=>trans_byte(filesize($filename)),
       //文件的类型
       'type'=>filetype($filename)
   ]);
}
get_file_info('1.txt');

function trans_byte(int $byte,$precision=2){
   $kb=1024;
   $mb=1024*$kb;
   $gb=1024*$mb;
   $tb=1024*$gb;
   if ($byte<$kb){
       echo $byte.'B';
   }elseif ($byte<$mb){
       echo round($byte/$kb,$precision).'KB';
   }elseif ($byte<$gb){
       echo round($byte/$mb,$precision).'MB';
   }elseif ($byte<$tb){
       echo round($byte/$gb,$precision).'GB';
   }else{
       echo round($byte/$tb,$precision).'TB';
   }
}



0

好帮手慕查理

2019-02-13

您好,同学可以将运行的代码复制粘贴进行反馈,以便运行同学的代码,测试效果,帮助同学查找问题。祝学习愉快!

0

0 学习 · 4928 问题

查看课程