PHP文件相关的操作函数——目录操作
1.有关文件类型的函数
PHP是以UNIX的文件系统为模型的,因此在Windows系统中我们只能获得“file”、“dir”或者“unknown”三种文件类型。而在UNIX系统中,我们可以获得“block”、“char”、“dir”、“fifo”、“file”、“link”和“unknown”7种类型。
1.1 filetype()
作用:获取文件的上传类型
语法:filetype(filename)
参数:该函数接受一个文件名作为参数,如果文件不存在将返回FALSE。
代码示例:
echo filetype("C:\Users\lenovo\Desktop"); //输出:dir
echo filetype("C:\Users\lenovo\Desktop/test.txt"); //输出:file
1.2 is_file():判断给定的文件名是否为一个正常的文件。如果是返回true,否则返回false
is_dir():判定给定的文件名是否是一个目录,返回结果同上
is_link():判定给定的文件名是否为一个符号链接,返回结果同上。
2.与文件属性相关的函数
2.1 file_exists()
作用:检查文件或目录是否存在
参数:文件名
返回值:文件存在返回TRUE,不存在返回FALSE
2.2 filesize()
作用:获得文件大小
参数:文件名
返回值:返回文件大小的字节数,出错返回FALSE
2.3 is_readable()
作用:判定给定文件名是否可读
参数:文件名
返回值:如果文件存在且可读则返回TRUE
2.4 is_writable()
作用:判断给定文件名是否可写
参数:文件名
返回值:如果文件存在且可写则返回TRUE
2.5 is_executable()
作用:判断给定文件名是否可执行
参数:文件名
返回值:如果文件存在且可执行则返回TRUE
2.6 filectime()
作用:获取文件的创建时间
参数:文件名
返回值:返回UNIX时间戳格式
2.7 filemtime()
作用:获取文件的修改时间
参数:文件名
返回值:返回UNIX时间戳格式
2.8 fileatime()
作用:获取文件的访问时间
参数:文件名
返回值:返回UNIX时间戳格式
2.9 stat()
作用:获取文件大部分属性值
参数:文件名
返回值:返回关于给定文件有用信息的数组
2.10 clearstatcache()
以上函数都需要提供同样的字符串参数,即一个指向文件或目录的字符串型变量。PHP将缓存这些函数的返回信息已提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如,如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,需要清除文件状态缓存。可以用该函数来清除PHP缓存的该文件信息。clearstatcache()函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作,并且需要该文件信息不被缓存时才需要调用它。
2.11 lstat():功能和stat()函数相同,只是该函数只能作用于一个符号链接,而不是普通的文件
2.12 fstat():功能和stat()函数相同,只是该函数需要一个资源句柄。
3.与文件目录操作有关的函数
3.1 解析目录路径
将目录路径中各个属性分离开通常很有用,如末尾的扩展名、目录部分和基本名。
3.1.1 basename()
作用:返回路径中的的文件部分
语法:string basename(string path[,string suffix])
参数:该函数给出一个包含有指向一个文件的全路径的字符串,第二个参数是可选参数,规定文件的扩展名。如果提供了则不会输出这个扩展名。
返回值:本函数返回基本的文件名
示例代码:
$path = "C:\Users\lenovo\Desktop/test.txt";
echo basename($path); //输出:test.txt
echo basename($path,".txt"); //输出:test
3.1.2 dirname()
作用:返回去掉文件名的目录名
语法:striing dirname(string path)
参数:该函数只有一个参数,给出一个包含有指向一个文件的全路径的字符串
返回值:返回去掉文件名后的目录名
示例代码:
$path = "C:\Users\lenovo\Desktop/test.txt";
echo dirname($path); //输出:C:\Users\lenovo\Desktop
3.1.3 pathinfo()
作用:返回路径信息
语法:pathinfo(path,options)
返回值:返回一个关联数组,其中包括指定路径中的目录名、基本名和扩展名三个部分,分别通过数组键dirname、basename和extension来引用。
示例代码:
$path = "C:\Users\lenovo\Desktop/test.txt";
var_dump(pathinfo($path));
//输出:array
'dirname' => string 'C:\Users\lenovo\Desktop' (length=23)
'basename' => string 'test.txt' (length=8) '
extension' => string 'txt' (length=3) 'filename' => string 'test' (length=4)
3.2 遍历目录
取得一个目录下的文件和子目录,就需要用到opendir()函数、readdir()函数、closedir()函数和rewinddir()函数
3.2.1 opendir():用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型)。如果该目录不存在或者没有访问权限,则返回FALSE
3.2.2 readdir():用于读取指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数,函数返回当前目录指针位置的一个文件名,并将目录指针向后移动一位。当指针位于目录的结尾时,因为没有文件存在则返回FALSE。
3.2.3 closedir():关闭指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数。函数无返回值,运行后将关闭打开的目录。
3.2.4 rewinddir():倒回目录句柄,接受已经用opendir()函数打开的可操作目录句柄作为参数。将目录指针重置目录到开始处,即倒回目录的开头。
示例代码:
$dirname = 'C:\Users\lenovo\Desktop';
$dir_handle = opendir($dirname);
while($file = readdir($dir_handle))
{
$dirFile = $dirname."/".$file;
echo $file." ".filesize($dirFile)." ".filetype($dirFile);
echo "<br>";
}
closedir($dir_handle);
3.3 统计目录大小
PHP目前没有提供目录总大小的标准函数,因此我们要自定义一个函数来完成这个任务。首先要考虑计算的目录中有没有包含其他子目录的情况,如果没有子目录,目录下的所有文件的大小相加后的总和就是这个目录的大小。如果包含子目录,就按照这个方法再计算一下子目录的大小。使用递归函数最适合此项任务。代码详见P351
3.4 建立和删除目录
3.4.1 mkdir()
该函数用于建立一个新目录,详情访问:http://www.w3school.com.cn/php/func_filesystem_mkdir.asp
3.4.2 rmdir()
该函数只能删除一个空目录并且目录必须存在。如果是非空的目录就需要先进入到目录中,使用unlink()函数将目录中的每个文件都删除掉,再回来将这个空目录删除。如果目录中还存在子目录,而且子目录也非空,就要使用递归的方法了。详细代码见P352
3.5 复制目录
虽然复制一个目录是文件操作的基本功能。但PHP中也没有给出特定的函数,同样需要自定义一个递归函数实现。要复制一个包含多级子目录的目录,将涉及文件的复制、目录创建等操作,复制一个文件可以通过PHP提供的copy()函数完成,创建目录可以使用mkdir()函数。定义函数时,首先对源目录进行遍历,如果遇到的是普通文件,直接使用copy()函数进行复制。如果遍历是遇到一个目录,则必须建立该目录,然后再对该目录下的文件进行复制操作,如果还有子目录,则使用递归重复操作,最终将整个目录复制完成、自定义的递归函数复制目录代码见P352
PHP文件相关的操作函数——目录操作的更多相关文章
- linux 文件操作与目录操作
文件操作 使用命令 命令格式: 命令 [选项] [参数] [] 表示可选的 示例: ls -a /etc 常识命令 ls:查看指定目录的内容,不指定目录时查看当前工作目录 选项 说明 -a 显示所有文 ...
- PHP常用技术文之文件操作和目录操作总结
<?php header("content-type:text/html;charset=utf-8"); /* *声明一个函数,传入文件名获取文件属性 *@param st ...
- 说说Python 中的文件操作 和 目录操作
我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...
- 【1】C#文件操作之目录操作
命名空间:System.IO Directory类下的静态方法: 一.创建目录 Directory.CreateDirectory(string fileName); 二.获取指定目录下的所有文件名 ...
- R语言文件相关的操作
1. 文件系统介绍 R语言对文件系统的操作,包括文件操作和目录操作,函数API都定义在base包中. 2. 目录操作 2.1 查看目录 查看当前目录下的子目录. # 启动R程序 ~ R # 当前的目录 ...
- R8—批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数
一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到 ...
- Python基础之文件和目录操作
1 .文件操作 1.1 文件打开和关闭 在python, 使用 open 函数, 可以打开一个已经存在的文件, 或者创建一个新文件. # 打开文件 f = open('test.txt', 'w') ...
- Node.js文件系统、路径的操作函数
Node.js文件系统.路径的操作函数 目录 Node.js文件系统.路径的操作函数 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到 ...
- vb.net FTP上传下载,目录操作
https://blog.csdn.net/dzweather/article/details/51429107 FtpWebRequest与FtpWebResponse类用来与特定FTP服务器进行沟 ...
随机推荐
- PermGen space
MyEclipse内存空间不足,调整空间操作: 1.点击"Run"-"Run Configurations",在打开的窗口中点击"Arguments& ...
- list for循环中删除元素
Iterator.remove() is safe, you can use it like this: List<String> list = new ArrayList<> ...
- C语言语法 typedef小结
在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...
- 开发板tftp下载文件
搭建过程: 1.安装相关软件包:tftpd(服务端),tftp(客户端),xinetd sudo apt-get install tftpd tftp xinetd 2.建立配置文件(蓝色的目录是可以 ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- jq冒泡之——点击其他地方隐藏
e.stopPropagetion(); <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 解决ScrollView 嵌套 GridView 单行显示问题
简单重写GridView package com.hh.beauter.my_ui; import android.content.Context; import android.util.Attri ...
- mac下安装mysql教程
由于更换了mac电脑,需要装一个mysql,经过各种资料的翻阅,各种踩坑,终于装完了,记录一下,方便大家参照: 1.下载最新的mysql安装包,下载地址:http://dev.mysql.com/do ...
- getSlotFromBufferLocked: unknown buffer: 0xf3d94ca0
安卓6.0模拟器导致,换一个模拟器解决
- Java基础加强之集合篇(模块记忆、精要分析)
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...