热门标签 | 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教程有兴趣的朋友有所帮助。

推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
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社区 版权所有