一篇关于php 入门的朋友参考的关于文件和目录的各种操作函数与实例应用,有需要的朋友可以简单的参考一下。

本章可以算是上一章的延续,介绍了除文件实际内容之外的附加信息,包括文件的大小、目录、访问权限等。文件系统中的某些函数只在服务器为特定的系统中时才有效,例如更改符号链接的函数symlink(),设定文件访问权限的函数chmod(),设定目录访问权限的函数umask()等等这些只在Linux系统中有效,在Windows系统中无效。PHP5以后提供的DirectoryIterator类也封装了很多实用的目录方面的操作

代码如下

复制代码

//------------- 采用DirectoryIterator类迭代目录中的文件 -------------

foreach(new directoryIterator('/usr/local/images') as $file){

print $file->getPathname()."n";

}

//------------- PHP5之前版本的实现方式 -------------

$d = opendir('/usr/local/images') or die($php_errormsg);

while(false !==($f = readdir($d))){

print $f."n";

}

closedir($d);文件信息函数

函数名 函数提供什么文件信息?

file_exists() 该文件是否存在

fileatime() 最后访问时间

filectime() 文件inode的最后修改时间

filegroup() 取得文件组(返回整数)

fileinode() 取得文件的信息节点数(返回整数)

filemtime() 取得文件数据块最后被写入的时间(返回Unix时间戳)

fileowner() 取得文件的所有者(返回用户ID)

fileperms() 取得文件的权限

filesize() 取得文件大小的字节数

filetype() 取得文件类型,可能返回 fifo,char,dir,block,link,file 和 unknown

is_dir() 判断给定文件名是否是一个目录

is_executable() 判断给定文件名是否可执行(自PHP5.0.0起可用于Windows)

is_file() 判断给定文件名是否为一个正常的文件

is_link() 判断给定文件名是否为一个符号连接

is_readable() 判断给定文件名是否可读

is_writable() 判断给定文件名是否可写

目录相关函数

函数名 函数提供什么文件信息?

mkdir() 创建一个新目录,第二个参数可用来设置访问权限

rmdir() 删除目录

rename() 重命名一个文件或目录

目录类相关方法

DirectoryIterator类封装了很多与目录相关的方法

方法名 函数提供什么目录信息?

isDir() 判断给定的DirectoryIterator item对象是否是一个目录

isDot() 判断当前的DirectoryIterator item对象是否是‘.’或‘..’

isFile() 判断当前的DirectoryIterator item对象是否是一个有效的文件

isLink() 判断当前的DirectoryIterator item对象是否是一个连接

isReadable() 判断当前的DirectoryIterator item对象是否可读

isWritable() 判断当前的DirectoryIterator item对象是否可写

isExecutable() 判断当前的DirectoryIterator item对象是否可执行

getATime() 获取当前Iterator item最后访问时间

getCTime() 获取当前Iterator item最后修改时间

getMTime() 获取当前Iterator item文件数据块最后被写入的时间

getFilename() 获取当前Iterator item文件名(带扩展名)

getPathname() 获取当前Iterator item路径名

getPath() 获取当前Iterator item路径名和文件名

getGroup() 获取当前Iterator item组ID

getOwner() 获取当前Iterator item拥有者ID

getPerms() 获取当前Iterator item权限

getSize() 获取当前Iterator item文件大小

getType() 获取当前Iterator item类型,可能是file,link or dir

getInode() 获取当前Iterator item的inode节点号

文件时间戳解惑

touch()函数修改文件的更新时间

fileatime()函数返回文件因为读或写被打开的最后时间

filemtime()函数返回文件内容被修改的最后时间

filectime()函数返回文件内容或元数据被修改的最后时间

获取文件信息

通过stat()可以获取一个包含文件相关信息的数组,与此函数类似的是fstat()函数,这个函数以一个文件句柄作为参数(由fopen()或popen()返回),lstat()用来获取符号或文件连接的信息。

数字索引 字符串索引 说明

0 dev 设备号

1 ino 信息节点号

2 mode 保护模式

3 nlink 被连接数目

4 uid 所有者用户ID

5 gid 所在组ID

6 rdev 设备类型,如果是inode设备的话

7 size 文件大小的字节数

8 atime 上次访问的时间(Unix时间戳)

9 mtime 上次修改的时间(Unix时间戳)

10 ctime 上次改变的时间(Unix时间戳)

11 blksize 文件系统IO的块大小

12 blocks 所占据块的数目

修改文件权限

chmod()函数修改文件的权限

chown()函数修改文件的所有者

chgrp()函数修改文件所属组

注意:上述3个函数在Windows系统中无效

获取文件名各部分信息

basename()函数可以取得文件名,dirname()函数可以取得路径名,pathinfo()取得目录名、完整文件名、扩展名、文件名(即不带扩展名)的关联数组,键名分别是[dirname]、[basename]、[extension]、[filename]

常通过dirname(__FILE__)的组合来获取当前目录路径(物理路径,常用在引用其他PHP文件上)

删除文件

用unlink()函数可以删除一个文件,如果删除失败将产生一个E_WARNING错误

提示:PHP5.0.0后此函数也可以用来删除远程文件,如FTP等

复制或移动文件

使用copy(old_dir,new_dir)函数可以复制文件,使用rename(old_dir,new_dir)移动文件,这里的new_dir是可以可以重命名文件名的。

模式匹配文件名列表(模糊查询)

如果希望像命令行那样查询出某个目录中的所有jpg文件(*.jpg),可以使用DirectoryIterator类的FileterIterator子类accept()方法或者glob()函数获取匹配的文件名。

//FileterIterator的实现代码

代码如下

复制代码

class ImageFilter extends FilterIterator {

public function accept() {

return preg_match('@.(gif|jpe?g|png)$@i',$this->current());

}

}

foreach (new ImageFilter(new DirectoryIterator('/usr/local/images')) as $img) {

print "

n";

}

//-------------- glob函数的实现代码 ------------

代码如下

复制代码

foreach (glob('/usr/local/docs/*.txt') as $file) {

$contents = file_get_contents($file);

print "$file contains $contentsn";

}递归目录中的文件

如果想获得一个目录及其子目录的文件大小,可以使用RecursiveDirectoryIterator(提供子目录获取的功能)和RecursiveIteratorIterator(平整化)

代码如下

复制代码

$dir = new RecursiveDirectoryIterator('/usr/local');

$totalSize = 0;

foreach (new RecursiveIteratorIterator($dir) as $file) {

$totalSize += $file->getSize();

}

print "The total size is $totalSize.n";

http://www.bkjia.com/PHPjc/631305.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631305.htmlTechArticle一篇关于php 入门的朋友参考的关于文件和目录的各种操作函数与实例应用,有需要的朋友可以简单的参考一下。 本章可以算是上一章的延续...

php教程目录,php基础入门篇-文件和目录操作_PHP教程相关推荐

  1. linux属性表示的文件,Linux基础入门:文件和目录属性的含义

    比如 : [root@istester isTester]# ll total 12 drwxr-xr-x 2 root root 4096 May 21 17:58 21Day -rw-r-xr-- ...

  2. sqlalchemy mysql教程_SQLAlchemy 教程 —— 基础入门篇

    SQLAlchemy 教程 -- 基础入门篇 一.课程简介 1.1 实验内容 本课程带领大家使用 SQLAlchemy 连接 MySQL 数据库,创建一个博客应用所需要的数据表,并介绍了使用 SQLA ...

  3. php laravel入口文件,Laravel 应用的入口:路由系列之基础入门篇

    Laravel 应用的入口:路由系列之基础入门篇 Created 3 years ago by 学院君, Updated 11 months ago Revision #2 71677 views 9 ...

  4. 〖Python零基础入门篇(55)〗- yaml文件的读取

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  5. RHEL 5基础篇—文件和目录的管理

    文件和目录的管理 linux命令的分类:  内部命令:指的是集成于Shell解释器程序内部的一些特殊指令,也成内键指令.  外部指令:指的是linux系统中能够完成特定功能的脚本文件或二进制程序,每个 ...

  6. linux入门_Linux超详细0基础入门篇(一)

    首先要感谢大康老师对我在Linux操作系统上的教导. 今天来讲一下用途广泛的Linux的基础入门教程 仅仅是做入门使用,如果想更加深入的学习那就需要自己做探索了. 本次例子使用的是kali linux ...

  7. EGE基础入门篇(二):开始使用EGE

    EGE专栏:EGE专栏 上一篇:EGE基础入门篇(一):绘图基础知识 下一篇:EGE基础入门篇(三):开场动画 EGE基础入门篇(二) 文章最后修改时间:2021年6月23日19:30:47 文章目录 ...

  8. 经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 基础入门篇

    SpringBoot 2.x 时代 – 基础入门篇 视频学习地址:https://www.bilibili.com/video/BV1Et411Y7tQ?p=112&spm_id_from=p ...

  9. Linux基础入门篇知识回顾

    Linux基础入门篇知识回顾 一.回顾书籍 二.基础知识 1.计算机基础知识 1.1计算机的特点及发展趋势 ①特点 ②发展趋势 1.2计算机系统组成 ①计算机硬件概念 ②计算机硬件各部分功能 ![在这 ...

最新文章

  1. 使用this.$router.push('')的方法进行路由跳转,提示'$router' of undefined问题
  2. 脊柱外科病人资料管理系统的界面设计分析
  3. 黑苹果挂载不了分区_让黑苹果变得更完美——BCM94532HMB无线蓝牙接力完美驱动!...
  4. 中国内地楼市泡沫严重 租售比1000倍超美国
  5. Syntax Error: Unexpected token 报错原因
  6. MSDN电子杂志上有关TFS的文章
  7. 代码级操作指南 | 如何在Docker Swarm中运行服务
  8. 63相似、合同、相抵
  9. 一些自己使用VS2015的心得
  10. 驱动人生病毒清除教程
  11. 一个五年Android开发者百度、阿里、聚美、映客的面试心经
  12. 计算机开机pin,电脑开机时忘记pin密码怎么办?
  13. 如何用python爬虫薅羊毛_拼多多现重大BUG被“薅羊毛”,教你如何用Python简单褥羊毛...
  14. kettle执行sql语句错误总结
  15. BPEL和XPDL的区别
  16. 如何配置luogu,codeforces的spj(special judge)
  17. anchor base和anchor free, 小物体检测, YOLO V1-3 9000 V4 V5 的区别,yolov5-8, yolox创新点
  18. UG\NX二次开发 判断面的凹凸、圆柱还是孔、外R角还是内R角。三种方案
  19. 数据转移高效方法(oracle)
  20. 学习记录:关于如何使用EndNote X9在word中插入文献

热门文章

  1. 字符串匹配算法(BF RK)
  2. 数据结构--链表--单链表中环的检测,环的入口,环的长度的计算
  3. burp爆破线程设置多少_你知道线程池创建多少线程比较合理吗?
  4. crc java_java实现CRC16 MODBUS校验算法
  5. mysql 选择特定的表_MySQL选择具有多个特定列的所有表
  6. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例
  7. 改变世界,改善生活:我从科沃斯扫地机器人X1,看到了AI新的希望
  8. C++很难学?这个ACM金牌大佬可不这么认为!
  9. 强化学习扫盲贴:从Q-learning到DQN
  10. 如何解决NLP分类任务的11个关键问题:类别不平衡低耗时计算小样本鲁棒性测试检验长文本分类 JayLou娄杰