PHP文件系统概述
>> 本文固定链接: http://php.ncong.com/php_course/file/wenjianxitong.html
>> 转载请注明: 恩聪php 2014年08月08日 于 恩聪PHP学习教程 发表
文件类型

在PHP中可以使用filetype()函数获取文件的上述类型,该函数接受一个文件名作为参数,如果文件不存在将返回FALSE。下面的程序是判断文件类型的示例,代码如下所示:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php //获取Linux系统下的文件类型 echo filetype('/etc/passwd'); //输出file,/etc/passwd为普通文件 echo filetype('/etc/grub.conf'); //输出lilnk,/etc/grub.conf为连接文件-->/boot/grub/grub.conf echo filetype('/etc/'); //输出dir,/etc/为一个目录,即文件夹 echo filetype('/dev/sda1'); //输出block,/dev/sda1为块设备,它是一个分区 echo filetype('/dev/tty01'); //输出char,为字符设备,它是一个字符终端 //获取windows系统下文件类型 echo filetype("C:\\WINDOWS\\php.ini"); //输出file,C:\\WINDOWS\\php.ini为一个普通文件 echo filetype("C:\\WINDOWS"); //输出dir,C:\\WINDOWS为一个文件夹(目录)?> |

在表中的函数都需要提供同样的字符串参数,即一个指向文件或目录的字符串变量。PHP将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清楚被缓存的信息。例如,如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清楚文件状态缓存。在这种情况下,可以用clearstatcache()函数来清楚被PHP缓存的该文件信息。clearstatcache()函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作,并且需要该文件信息不被缓存时才需要调用它。下面的程序中通过调用这些函数获取文件大部分属性。代码如下所示:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?php //声明一个函数,通过传入一个文件名称获取文件大部分属性 function getFilePro($fileName){ //如果提供的文件或目录不存在,则直接退出函数 if(!file_exists($fileName)){ echo "目标不存在!!<br>"; return; } //判断是否是一个普通文件,如果是则条件成立 if(is_file($fileName)) echo $fileName."是一个文件<br>"; //判断是否是一个目录 if(is_dir($fileName)) echo $fileName."是一个目录<br>"; //用定义的函数输出文件形态 echo "文件形态:".getFileType($fileName)."<br>"; //获取文件大小,并自定义转换单位 echo "文件大小:".getFileSize(filesize($fileName))."<br>"; if(is_readable($fileName)) //判断提供的文件是否可以读取内容 echo "文件可读<br>"; if(is_writable($fileName)) //判断提供的文件是否可以改写 echo "文件可写<br>"; if(is_executable($fileName)) //判断提供的文件是否有执行的权限 echo "文件可执行<br>"; echo "文件建立时间:".date("Y年m月j日",filectime($fileName))."<br>"; echo "文件最后更新的时间:".date("Y年m月j日",filemtime($fileName))."<br>"; echo "文件最后打开时间:".date("Y年m月j日",fileatime($fileName))."<br>"; } //声明一个函数用来返回文件的类型 function getFileType($fileName){ //通过filetype()函数返回的文件类型作为选择条件 switch(filetype($fileName)){ case 'file': $type .= "普通文件"; break; case 'dir': $type .= "目录文件"; break; case 'block': $type .= "块设备文件"; break; case 'char': $type .= "字符设备文件"; break; case 'fifo': $type .= "命名管道文件"; break; case 'link': $type .= "符号连接"; break; case 'unknown': $type .= "未知类型"; break; default: $type .="没有检测到类型"; } return $type; //返回转换后的类型 } //自定义一个文件大小单位转换函数 function getFileSize($bytes){ if($bytes >= pow(2,40)){ //如果提供的字符数大于等于2的40次方 $return = round($bytes/pow(1024,4),2); //将字节大小转换为同等的T大小 $suffix = "TB"; //单位为TB }elseif($bytes >= pow(2,30)){ //如果提供的字符数大于等于2的30次方 $return = round($bytes/pow(1024,3),2); //将字节大小转换为同等的G大小 $suffix = "GB"; //单位为GB }elseif($bytes >= pow(2,20)){ //如果提供的字符数大于等于2的20次方 $return = round($bytes/pow(1024,2),2); //将字节大小转换为同等的M大小 $suffix = "MB"; //单位为MB }elseif($bytes >= pow(2,10)){ //如果提供的字符数大于等于2的10次方 $return = round($bytes/pow(1024,1),2); //将字节大小转换为同等的K大小 $suffix = "KB"; //单位为KB }else{ $return = $bytes; //字节大小单位不变 $suffix = "Byte"; } return $return." ".$suffix; //返回合适的文件大小和单位 } //调用自定义函数,将当前目录下的file.php文件传入,获取属性 getFilePro("file.php"); ?> |
除了可以使用这些独立的函数分别获取文件的属性外,还可以使用一个stat()函数获取文件的大部分属性值。该函数将返回一个数组,数组中的每个元素对应文件的一种属性值。该函数的使用如下代码所示:
|
1
2
3
4
5
6
|
<?php //返回关于文件的信息数组,是关联和索引混合的数组 $filePro = stat("file.php"); //只打印其中的关联数组,第13个元素之后为关联数组 print_r(array_slice($filePro,13));?> |
除了使用stat()函数获取文件的大部分属性值之外,也可以使用对应的函数lstat和fstat()函数取得。和stat()函数略有不同,stat()函数作用于一个普通的文件,lstat()只能作用于一个符号连接,而fstat()函数需要一个资源句柄。
PHP文件系统概述的更多相关文章
- JFS 文件系统概述及布局分析
JFS 文件系统概述及布局分析 日志文件系统如何缩短系统重启时间 如果发生系统崩溃,JFS 提供了快速文件系统重启.通过使用数据库日志技术,JFS 能在几秒或几分钟之内把文件系统恢复到一致状态,而非日 ...
- 自学Linux Shell8.1-linux文件系统概述及操作
点击返回 自学Linux命令行与Shell脚本之路 8.1-linux文件系统概述及操作 1. linux支持的文件系统 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 ...
- Linux文件系统概述
Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容. Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序 ...
- Linux 虚拟文件系统概述
转自:http://blog.csdn.net/u011373710/article/details/70198080 文章梗概 本文首先以“尽量不涉及源代码”的方式讨论Linux虚拟文件系统的存在的 ...
- Linux文件系统概述二
VFS-目录项对象(dentry) 每个文件除了有一个索引节点 inode 数据结构外,还有一个目录项 dentry 数据结构 dentry 结构代表的是逻辑意义上的文件,描述的是文件逻辑上的属性,目 ...
- GlusterFS分布式文件系统概述
一.GlusterFS概述 GlusterFS是一个开源的分布式文件系统,同时也是Scale-Out存储解决方案Gluster的核心,在存储数据方面有强大的横向扩展能力,通过扩展不同的节点可以支持PB ...
- NTFS文件系统概述
NTFS简介 NTFS是Windows NT家族1的限制级专用的文件系统2.Win95.Win98识别不了NTFS,只有支持NT内核的OS才能识别NTFS文件系统.当前,NTFS取代了老式的FAT文件 ...
- PHP12 文件操作
学习要点 文件系统概述 目录基本操作 文件基本操作 文件上传下载 文件上传类的设计 文件系统概述 概述 PHP文件系统的操作是基于UNIX系统模型,所以有一些文件处理函数无法在windows服 ...
- 分布式文件存储:FastDFS简单使用与原理分析
引言 FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点. 用了 2 ...
随机推荐
- QTP自传之描述性编程
描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名 ...
- Java---字节输入,文件操作,病毒制造,请谨慎运行!
今天刚刚学了Java文件操作,跟着老师的思路,迫不及待的制造了这个小病毒. 用到的是一些小知识,很简单. 创建文件和文件夹,向文件中写入字节. 我已渐渐的爱上了编程!!! 下面附上完整代码: impo ...
- 西安Uber优步司机奖励政策(1月11日~1月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Servlet线程安全
public class servletDemo1 extends HttpServlet { int i=0; public void doGet(HttpServletRequest reques ...
- 你应该知道的8个Java牛人
简单介绍一下8个Java牛人,他们为Java社区,创建了框架(framework),产品或者是写书,影响甚至改变了Java开发的方法 8.Tomcat创始人 James Duncan Davidson ...
- JavaBean基础
JavaBean的概念 JavaBean是一种可重复使用.且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean:还有一种是没有用户界 ...
- VS项目属性配置实验过程
(原创,转载注明出处:http://www.cnblogs.com/binxindoudou/p/4017975.html ) 一.实验背景 cocos2d-x已经发展的相对完善了,从项目的创建.编译 ...
- 再回首,Java温故知新——开篇说明
不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其 ...
- [转] [翻译]图解boost::bind
http://kelvinh.github.io/blog/2013/12/03/boost-bind-illustrated/ 其实这是很久之前留的一个坑了,一直没有填.. 记得在刚开始看到 boo ...
- 网络环境场景以及模拟工具netem
网络环境场景包括: 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况. 掉包(Drop),随机丢弃一些数据. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的 ...