热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

目录与文件的基本操作一(44)

目录与文件的基本操作一(44):解析目录路径使用PHP脚本可以方便对目录进行操作,如创建目录、遍历目录、复值目录与删除目录等操作。??常用的文件目录路径格式:??$unixPath
解析目录路径

使用PHP脚本可以方便对目录进行操作,如创建目录、遍历目录、复值目录与删除目录等操作。
??常用的文件目录路径格式:
??$unixPath="/var/www/html/index.php";
//在UNIX系统中的绝对路径,必须使用"/"分隔
??$winPath="C:\\Appserv\\www\\index.php";
//在Windows系统的绝对路径,默认使用"\"分隔
??$winPath2="C:/Appserv/www/index.php";
//在Windows系统中也可使用“/”分隔。
??注意使用绝对路径与相对路径。

PHP文件路径相关函数

??basename--返回路径中的文件名部分

??语法:string basename( string path [, string suffix] )
??给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以suffix结束的,那这一部分也会被去掉。
??dirname--返回路径中的目录部分
??语法:string dirname( string path )
??给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
$path= "/home/httpd/html/index.php";
$file= basename($path);// $file值:"index.php"
$file= basename($path, ".php"); // $file值:"index "
$file= dirname($path); // $file值:"/home/httpd/html"
?>

pathinfo--返回文件路径的信息
??语法:array pathinfo( string path [, intoptions] )
??pathinfo() 返回一个联合数组包含有path的信息。包括以下的数组单元:dirname,basename和extension。
$path_parts= pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n"; // /www/htdocs
echo $path_parts["basename"] . "\n"; // index.html
echo $path_parts["extension"] . "\n"; // html
?>
??realpath--返回规范化的绝对路径名
??语法:string realpath( string path )
??realpath() 扩展所有的符号连接并且处理输入的path中的'/./', '/../' 以及多余的'/' 并返回规范化后的绝对路径名。返回的路径中没有符号连接,'/./' 或'/../' 成分。

遍历目录

opendir--打开目录句柄
??语法:resource opendir( string path [, resource context] )
??打开一个目录句柄,可用于之后的closedir(),readdir()和rewinddir()调用中。
??readdir--从目录句柄中读取条目
??语法:string readdir( resource dir_handle)
??返回当前目录指针位置的文件名,没有返回false,并将指针向下移动一位。文件名以在文件系统中的排序返回。
??closedir--关闭目录句柄
??语法:void closedir( resource dir_handle)
??关闭由dir_handle指定的目录流。流必须之前被opendir()所打开。
??rewinddir--倒回目录句柄
??语法:void rewinddir( resource dir_handle)
??将dir_handle指定的目录流重置到目录的开头。

统计目录大小

??disk_free_space--返回目录中的可用空间
??语法:float disk_free_space( string directory )
??给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。
??disk_total_space--返回一个目录的磁盘总大小
??语法:float disk_total_space( string directory )
??给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。

例子

//自定义一个函数dirSize(),统计传入参数的目录大小function dirSize($directory) { $dir_size=0;//初值为0,用来累加各文件大小从而计算目录大小if($dir_handle=@opendir($directory)){ //打开目录并判断成功打开while($filename=readdir($dir_handle)) { //循环遍历目录if($filename!="." && $filename!="..") { //排除特殊的目录$subFile=$directory."/".$filename; //将文件和目录相连if(is_dir($subFile)) //如果为目录$dir_size+=dirSize($subFile); //求子目录的大小if(is_file($subFile)) //如果是文件$dir_size+=filesize($subFile); //求出文件的大小并累加} } closedir($dir_handle); //关闭文件资源return $dir_size; //返回计算后的目录大小} } $dir_size=dirSize("phpMyAdmin"); //调函数计算目录大小,返回目录大小echo round($dir_size/pow(1024,1),2)."KB";//将目录字节换为“KB”单位?>

建立与删除目录

mkdir--新建目录
??语法:boolmkdir(string pathname [,intmode])
??尝试新建一个由pathname指定的目录。
??rmdir--删除目录
??语法:boolrmdir( string dirname)
??尝试删除dirname所指定的目录。该目录必须是空的,而且要有相应的权限。如果成功则返回TRUE,失败则返回FALSE。
??unlink--删除文件
??语法:boolunlink ( string filename )
??删除filename。和Unix C 的unlink() 函数相似。如果成功则返回TRUE,失败则返回FALSE

//自定义函数递归的删除整个目录function delDir($directory) { if(file_exists($directory)) { //判断目录是否存在,如果存在则执行if($dir_handle=@opendir($directory)){ //打开返回目录资源,并判断while($filename=readdir($dir_handle)){ //遍历目录读出目录中信息if($filename!="." && $filename!="..") { //一定要排除两个特殊目录$subFile=$directory."/".$filename;//将目录下文件和当前目录相连if(is_dir($subFile)) //如果是目录条件则成立delDir($subFile); //递归调用自己删除子目录if(is_file($subFile)) //如果是文件条件则成立unlink($subFile); //直接删除这个文件} } closedir($dir_handle); //关闭目录资源rmdir($directory); //删除空目录} } } delDir("phpMyAdmin"); //调用函数,将程序所在目录中phpMyAdmin文件夹删除?>

复制与移动目录

copy--拷贝文件
??语法:boolcopy ( string source, string dest)
??将文件从source拷贝到dest。如果成功则返回TRUE,失败则返回FALSE。
??PHP中没有提供复制与移动目录的相关函数。如需要,只要自定义函数了。

文件的基本操作

文件的打开与关闭

fopen--打开文件或者URL
??语法:resource fopen( string filename, string mode [, booluse_include_path[, resource zcontext]] )
??fopen() 将filename指定的名字资源绑定到一个流上。如果filename是"scheme://..." 的格式,则被当成一个URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去。
??mode参数指定了所要求到该流的访问类型。
??如果也需要在include_path中搜寻文件的话,可以将可选的第三个参数use_include_path设为'1' 或TRUE。
??如果打开失败,本函数返回FALSE。
fclose--关闭一个已打开的文件指针

写入文件

fwrite--写入文件(可安全用于二进制文件)
??语法:intfwrite( resource handle, string string[, intlength] )
??fwrite() 把string的内容写入文件指针handle处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。返回写入的字符数,出现错误时则返回FALSE

读取文件内容

??fread--读取文件(可安全用于二进制文件)
??string fread( inthandle, intlength )
??fread() 从文件指针handle读取最多length个字节。该函数在读取完length个字节数,或到达EOF 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

php $handle = fopen("http://www.example.com/", "rb"); $contents = ""; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?>

fgets--从文件指针中读取一行
??语法:string fgets( inthandle [,intlength])
??从handle指向的文件中读取一行并返回长度最多为length-1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了length -1 字节后停止(看先碰到那一种情况)。如果没有指定length,则默认为1K,或者说1024 字节。
??fgetc--从文件指针中读取字符
??语法:string fgetc( resource handle )
??返回一个包含有一个字符的字符串,该字符从handle指向的文件中得到。碰到EOF 则返回FALSE。

file--把整个文件读入一个数组中
??语法:array file ( string filename [, intuse_include_path[, resource context]] )
??和readfile()一样,只除了file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败file() 返回FALSE。
??readfile--输出一个文件
??语法:intreadfile( string filename [, booluse_include_path[, resource context]] )
??读入一个文件并写入到输出缓冲。
??返回从文件中读入的字节数。如果出错返回FALSE 并且除非是以@readfile() 形式调用,否则会显示错误信息。

以上就介绍了目录与文件的基本操作一 (44),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 如何在PHP中获取数组中特定元素的索引位置
    在PHP中获取数组中特定元素的索引位置有多种方法。首先,可以使用 `array_search()` 函数,其语法为 `array_search(目标值, $array)`,该函数将返回匹配元素的第一个键名(即下标)。其次,也可以利用 `array_keys()` 函数,通过 `array_keys($array, 目标值)` 语法来获取所有匹配元素的键名列表。这两种方法都能有效解决数组元素定位的问题,具体选择取决于实际需求和性能考虑。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
    深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ... [详细]
  • 利用PHP SDK高效接入新浪微博热搜榜单功能 ... [详细]
  • VB.net 进程通信中FindWindow、FindWindowEX、SendMessage函数的理解
    目录一、代码背景二、主要工具三、函数解析1、FindWindow:2、FindWindowEx:3、SendMessage: ... [详细]
  • String字符串与字符数组#includeStringintmain(){char*strhello;字符串与字符数组的关系:字符串是 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 深入解析 Java UTC 时间处理技术与应用 ... [详细]
  • 在MySQL中实现时间比较功能的详细解析与应用
    在MySQL中实现时间比较功能的详细解析与应用。本文深入探讨了MySQL中时间比较的实现方法,重点介绍了`UNIX_TIMESTAMP`函数的应用。该函数可以接收一个日期时间参数,也可以不带参数使用,其返回值为Unix时间戳,便于进行时间的精确比较和计算。此外,文章还涵盖了其他相关的时间处理函数和技巧,帮助读者更好地理解和掌握MySQL中的时间操作。 ... [详细]
author-avatar
王锟2004
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有