filesize返回的是以字节为单位的数据也可以使之处理数字
1.文件的属性信息获取
首先文件具有类型,在linux下边,有block(块设备,如磁盘分区、CD-ROM)、char(以字符为输入的设备,如键盘、打印机)、dir(目录类型,目录也是文件的一种)、fifo(命名管道,解释是将信息从一个进程传到另一个进程)、file(普通的文件)、link(链接,类似win下边的快捷方式)、unknow(未知类型)7大类,在win下边,只有3类:file、dir和unknown。Linux渣表示一定要好好搞一下Linux-_-,人家完全是为Linux而生。
关于类型的获取有这么几个函数:filetype:获取类型; is_file:判断为是否是正常文件; is_link:判断是否是链接。
关于属性的获取有这么几个函数:
file_exists:判断文件或目录是否存在;
filesize:获取文件大小;
is_readable、is_writable、is_executable :是否可读、可写、可执行;
filectime、filemtime、fileatime:获取文件的创建时间(create)、修改时间(modify)、访问时间(access),均返回时间戳;
stat:获取文件的一些基本信息,返回一个索引与关联混合数组。
比如,可以这样判断文件类型:
复制代码
<php
function getFileType($path){ // 获取文件类型
switch(filetype($path)){
case 'file': return 'ordinary file';
case 'dir': return 'directory';
case 'block': return 'block device file';
case 'char': return 'transfer device base on char';
case 'fifo': return 'named pipes';
case 'link': return 'symbol link';
default: return 'unknown type';
}
}
复制代码
filesize返回的是以字节为单位的数据,如果是大文件数字或很大,可以对数字先处理一下,代码如下
复制代码
<?php
// 处理文件大小
function getSize($path = '', $size = -1){
if($path !== null && $size == -1){ // 只传路径就计算大小,也可以使之只处理数字
$size = filesize($path);
}
if($size >= pow(2, 40)){
return round($size/pow(2, 40), 2).'TB';
}
else if($size >= pow(2, 30)){
return round($size/pow(2, 30), 2).'GB';
}
else if($size >= pow(2, 20)){
return round($size/pow(2, 20), 2).'MB';
}
else if($size >= pow(2, 10)){
return round($size/pow(2, 10), 2).'KB';
}
else{
return round($size, 2).'Byte';
}
}
复制代码
现在综合来获取一下文件信息,代码如下:
复制代码
<?php
function getFileInfo($path){
if(!file_exists($path)){ // 判断文件是否存在
echo 'file not exists!<br>';
return;
}
if(is_file($path)){ // 是文件,打印基础文件名
echo basename($path).' is a file<br>';
}
if(is_dir($path)){ // 是目录 ,返回目录
echo dirname($path).' is a directory<br>';
}
echo 'file type:'.getFileType($path).'<br>'; // 获取文件类型
echo 'file size:'.getSize($path).'<br>'; // 获取文件大小
if(is_readable($path)){ // 是否可读
echo basename($path).' is readable<br>';
}
if(is_writeable($path)){ // 是否可写
echo basename($path).' is writeable<br>';
}
if(is_executable($path)){ // 是否可执行
echo basename($path).' is executable<br>';
}
// touch函数可以修改这些时间
echo 'file create time: '.date('Y-m-d H:i:s', filectime($path)).'<br>'; // 创建时间
echo 'file modify time: '.date('Y-m-d H:i:s', filemtime($path)).'<br>'; // 修改时间
echo 'last access time: '.date('Y-m-d H:i:s', fileatime($path)).'<br>'; // 上次访问时间
echo 'file owner: '.fileowner($path).'<br>'; // 文件拥有者
echo 'file permission: '.substr(sprintf('%o', (fileperms($path))), -42881064151).'<br>'; // 文件权限,八进制输出
echo 'file group: '.filegroup($path).'<br>'; // 文件所在的组
}
filesize返回的是以字节为单位的数据也可以使之处理数字的更多相关文章
- ZeroMQ接口函数之 :zmq_msg_size - 以字节为单位返回消息内容的大小
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_size zmq_msg_size(3) ØMQ Manual - ØMQ/3.2.5 Name zmq ...
- 鸿蒙内核源码分析(字符设备篇) | 字节为单位读写的设备 | 百篇博客分析OpenHarmony源码 | v67.01
百篇博客系列篇.本篇为: v67.xx 鸿蒙内核源码分析(字符设备篇) | 字节为单位读写的设备 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...
- UTF-8以字节为单位对Unicode进行编码
UTF-8以字节为单位对Unicode进行编码.从Unicode到UTF-8的编码方式如下: Unicode编码(16进制) UTF-8 字节流(二进制) 000000 - 00007F 0xxxxx ...
- 在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用XML返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用JSON返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction
今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...
- 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化
背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...
- ThinkPHP之中的getField、Find、select、返回数据类型详解(ThinkPHP之中所有数据读取了)
小李子:用于演示作用的数据库表:customers 官方解读: “ 读取数据集其实就是获取数据表中的多行记录(以及关联数据),使用select方法 ” $customers=D('customers' ...
- Mysql数据数据[字节、长度、数据范围]一览表
1.mysql有哪些数据类型: 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOU ...
随机推荐
- 如何在android的mk文件添加依赖已经编译好的库
用$(MY_LIB)是代表你的库的所在目录,目录结构是这样 MY_LIB |---include |-----xxx.h |-----xxx.h |---lib |----MYLIB.a LOCAL_ ...
- svn 切换默认用户名
2015年1月19日 15:37:30\ 原文: http://www.2cto.com/os/201307/229325.html linux svn切换用户 1. 临时切换 在所有命令下强 ...
- FastReport安装说明(中文版)
FastReport安装说明(中文版) 内容列表 I. IntroductionI. 介绍II. Manual installing of the FastReport packagesII. 手动安 ...
- Python多进程(1)——subprocess与Popen()
Python多进程方面涉及的模块主要包括: subprocess:可以在当前程序中执行其他程序或命令: mmap:提供一种基于内存的进程间通信机制: multiprocessing:提供支持多处理器技 ...
- 解决 internet connection sharing 启动不了
1.确认Windows Firewall服务是否启动(有异常可参考下面) a.打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ...
- 如何在Win8系统上建立WIFI热点
1.首先将鼠标移到桌面左下角,单击右键,在弹出的快捷菜单中找到“命令提示符(管理员)”,点击 2.点击后,系统就以管理员权限打开了命令提示符,在命令提示符中输入以下命令“netsh wlan set ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密:另一个称为密钥(private key),只有拥有者才能看到,用于解密. 在使用jenkins ...
- svn status 显示 ~xx
“~” 版本控制下的项目与其它类型的项目重名
- unix PS命令和JPS命令的区别
1.JPS介绍 用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java ...