basename($filename), "文件类型" => filetype($filename), "文件大小" => trans_byte(filesize($filename)), "创建时间" => date('Y-m-d H:i:s', filectime($filename)), "修改时间" => date('Y-m-d H:i:s', filemtime($filename)), "上一次访问时间" => date('Y-m-d H:i:s', fileatime($filename)), ]; } /** * @use 转换字节大小 * @param int $byte 字节大小 * @param int $precision 小数点保留位数 * @return string 转换后的单位 */ public static function transByte(int $byte, $precision = 2): string { $kb = 1024; $mb = 1024 * $kb; $gb = 1024 * $mb; $tb = 1024 * $gb; if ($byte < $kb) { return $byte . 'B'; } if ($byte < $mb) { // 默认四舍五入, 保留两位小数 return round($byte / $kb, $precision) . ' KB'; } if ($byte < $gb) { return round($byte / $mb, $precision) . ' MB'; } if ($byte < $tb) { return round($byte / $tb, $precision) . ' GB'; } } /** * @use 以字符串形式读取内容 * @param string $filename * @return false|string */ public static function readString(string $filename) { if (is_file($filename) && is_readable($filename)) { return file_get_contents($filename); } return false; } /** * @use 以数组形式读取内容 * @param string $filename * @param bool $skip_empty_lines * @return array|false */ public static function readArray(string $filename, bool $skip_empty_lines = false) { if (is_file($filename) && is_readable($filename)) { if ($skip_empty_lines) { // 忽略空行读取 return file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); } else { // 以数组形式直接读取, 不忽略空行 return file($filename); } } } /** * @use 增加文件内容升级版 * @param string $filename 路径名称 * @param mixed $data 需要写入的数据 * @param boolean $clear_content 是否清空原始内容再写入 * @return bool true|false */ public static function write(string $filename, $data, bool $clear_content = false) { $dirname = dirname($filename); // 检测目标路径是否存在 if (!file_exists($dirname)) { mkdir($dirname, 0777, true); } // 文件存在并且不清空原始文件 if (is_file($filename) && !$clear_content) { $srcData = file_get_contents($filename); } // 检测数据是否为数组或者对象 if (is_array($data) || is_object($data)) { // 序列化数据 $data = serialize($data); } // 拼装数据 $data = $srcData . $data; // 写入数据 if (file_put_contents($filename, $data) !== false) { return true; } return false; } /** * @use 截断文本 * @param string $filename 文件名称 * @param int $length 截断文本长度 * @return boolean true|false */ public static function truncate(string $filename, int $length): bool { // 判断文件是否存在并且是可写的 if (is_file($filename) && is_writeable($filename)) { // 创建文件句柄, 以读写方式打开 $handler = fopen($filename, 'rb+'); $length = $length < 0 ? 0 : $length; ftruncate($handler, $length); fclose($handler); } return false; } }