第六章 php目录与文件操作


Posted in PHP onDecember 30, 2011

一.目录操作
basename -- 返回路径中的文件名部分
dirname -- 返回路径中的目录部分
pathinfo -- 返回文件路径的信息
realpath -- 返回规范化的绝对路径名

<?php 
$path = 'demo1.php'; 
$path = realpath($path); 
echo basename($path); 
echo '<br>'; 
echo dirname($path); 
echo '<br>'; 
$array_path = pathinfo($path); 
echo 'basename : '.$array_path['basename'].'<br>'; 
echo 'dirname : '.$array_path['dirname'].'<br>'; 
echo 'extension : '.$array_path['extension'].'<br>'; 
echo 'filename : '.$array_path['filename'].'<br>'; 
?>

Output:
demo1.php
D:\AppServ\www\Basic6
basename : demo1.php
dirname : D:\AppServ\www\Basic6
extension : php
filename : demo1

二.磁盘、目录和文件计数
1.查看文件大小和磁盘空间
filesize -- 取得文件大小
disk_free_space -- 返回目录中的可用空间
disk_total_space -- 返回一个目录的磁盘总大小

<?php 
$path ='demo2.php'; 
$path = realpath($path); 
$drive = 'c:'; 
echo round(filesize($path)/1024,2).'kb'.'<br/>'; 
echo round(disk_free_space($drive)/1024/1024/1024,2).'GB'.'<br/>'; 
echo round(disk_total_space($drive)/1024/1024/1024,2).'GB'.'<br/>'; 
?>

output
0.26kb
10.61GB
30.01GB

2.获得文件的各种时间
fileatime -- 取得文件的上次访问时间
filectime -- 取得文件的 inode 修改时间
filemtime -- 取得文件修改时间

<?php 
$file = realpath ( '../Basic5/demo3.php' ); 
$date_format = 'Y-m-d h:i:s'; 
echo 'lastest accessing time : '.date ( $date_format, fileatime ( $file ) ) . '<br>'; 
echo 'lastest change time : '.date ( $date_format, filectime ( $file ) ) . '<br>'; 
echo 'lastest modify time : '.date ( $date_format, filemtime ( $file ) ) . '<br>'; 
?>

output
lastest accessing time : 2011-12-18 04:26:49
lastest change time : 2011-12-18 04:26:49
lastest modify time : 2011-12-18 04:29:15

三.文件处理
文件读写的两种方式:
1.php所有版本都支持的方法:
fopen -- 打开文件或者 URL
fclose -- 关闭一个已打开的文件指针
fwrite -- 写入文件(可安全用于二进制文件)
表 1. fopen() 中 mode 的可能值列表

mode 说明
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
<?php 
$fp = fopen('file1.txt','w'); 
$outStr = "my name is anllin,\r\nmy age is 29."; 
fwrite($fp,$outStr,strlen($outStr)); 
fclose($fp); 
?>

output
my name is anllin,
my age is 29.
2.php5新加入的方法
file_put_contents -- 将一个字符串写入文件
<?php 
file_put_contents('file2.txt',"my name is anllin,\r\nmy age is 29."); 
?>

output
my name is anllin,
my age is 29.
读出文件内容的方法:
函数 功能
Fgetc() 读出一个字符,并将指针移到下一个字符
Fgets() 读出一行字符,可以指定一行显示的长度。
Fgetss() 从文件指针中读取一行并过滤掉HTML标记
Fread() 读取定量的字符
Fpassthru() 输出文件到指定处的所有剩余数据
File() 将整个文件读入数组中,以行分组
Readfile() 读入一个文件并写入到输出缓冲
File_get_contents() 将整个文件读入一个字符串
Feof() 判断读完文件函数
File_exists() 查看文件是否存在
示例文件file1.txt的内容如下:
my name is anllin,
my age is 29.
fgetc -- 从文件指针中读取字符
Demo.php
<?php 
$fp = fopen('file1.txt','r'); 
echo fgetc($fp); 
echo fgetc($fp); 
fclose($fp); 
?>

Output:
my
fgets -- 从文件指针中读取一行
<?php 
$fp = fopen('file1.txt','r'); 
echo fgets($fp); 
echo fgets($fp); 
fclose($fp); 
?>

output
my name is anllin, my age is 29.
fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记
<?php 
$fp = fopen('file3.txt','w'); 
$outStr = "my name is <b>anllin</b>"; 
fwrite($fp,$outStr,strlen($outStr)); 
fclose($fp); 
$ftp = fopen('file3.txt','r'); 
echo fgetss($ftp); 
fclose($ftp); 
?>

Output
my name is anllin
fread -- 读取文件(可安全用于二进制文件)
<?php 
$filename = 'file1.txt'; 
$fp = fopen($filename,'r'); 
$contents = fread($fp,filesize($filename)); 
echo $contents; 
fclose($fp); 
?>

Output
my name is anllin, my age is 29.
fpassthru -- 输出文件指针处的所有剩余数据
<?php 
$filename = 'file1.txt'; 
$fp = fopen($filename,'rb'); 
$leftSize = fpassthru($fp); 
echo $leftSize; 
fclose($fp); 
?>

output
my name is anllin, my age is 29. 33
file -- 把整个文件读入一个数组中
<?php 
$lines = file('file1.txt'); 
foreach ($lines as $line_num => $line) 
{ 
echo $line_num.' : '.$line.'<br>'; 
} 
?>

output
0 : my name is anllin,
1 : my age is 29.
readfile -- 输出一个文件
<?php 
$size = readfile('file1.txt'); 
echo $size; 
?>

output
my name is anllin, my age is 29.33
file_get_contents -- 将整个文件读入一个字符串(php5.0新增)
<?php 
$contents = file_get_contents('file1.txt'); 
echo $contents; 
?>

output
my name is anllin, my age is 29.
feof -- 测试文件指针是否到了文件结束的位置
<?php 
$fp = fopen('file1.txt','r'); 
while(!feof($fp)) 
{ 
echo fgetc($fp); 
} 
fclose($fp); 
?>

output
my name is anllin, my age is 29.
file_exists -- 检查文件或目录是否存在
<meta http-equiv="content-type" content="text/html;charset=utf-8"/> 
<?php 
$filename = 'file1.txt'; 
if(file_exists($filename)) 
{ 
echo '执行文件读写操作'; 
} 
else 
{ 
echo '你要找的文件不存在'; 
} 
?>

output
执行文件读写操作
filesize -- 取得文件大小
<?php 
$file_size = filesize('file1.txt'); 
echo $file_size; 
?>

output
33
unlink -- 删除文件
<?php 
$isDeleted = unlink('file3.txt'); 
echo $isDeleted; 
?>

output
1
rewind -- 倒回文件指针的位置
ftell -- 返回文件指针读/写的位置
fseek -- 在文件指针中定位
<?php 
$fp = fopen ( 'file1.txt', 'r' ); 
fgetc ( $fp ); 
fgetc ( $fp ); 
echo ftell ( $fp ) . '<br>'; 
rewind ( $fp ); 
echo ftell ( $fp ) . '<br>'; 
fgetc ( $fp ); 
fgetc ( $fp ); 
echo ftell ( $fp ) . '<br>'; 
fseek($fp,0);//same as rewind ($fp) 
echo ftell ( $fp ) . '<br>'; 
?>

output
2
0
2
0
Flock的操作值
操作值 意义
LOCK_SH(以前为1) 读写锁定。这意味着文件可以共享,其他人可以读该文件
LOCK_EX(以前为2) 写操作锁定。这是互斥的,该文件不能被共享
LOCK_UN(以前为3) 释放已有的锁定
LOCK_NB(以前为4) 防止在请求加锁时发生阻塞
flock -- 轻便的咨询文件锁定
<?php 
$filename = 'file1.txt'; 
$fp = fopen($filename,'rb'); 
flock($fp,LOCK_EX);//locked 
$contents = fread($fp,filesize($filename)); 
flock($fp,LOCK_UN);//unlocked 
echo $contents; 
fclose($fp); 
?>

output
my name is anllin, my age is 29.
目录句柄操作
opendir -- 打开目录句柄
readdir -- 从目录句柄中读取条目
closedir -- 关闭目录句柄
<?php 
$dir= opendir('../Basic6'); 
while(!!$file = readdir($dir)) 
{ 
echo $file.'<br/>'; 
} 
closedir($dir); 
?>

output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
scandir -- 列出指定路径中的文件和目录
<?php 
$files = scandir('../Basic6'); 
foreach($files as $file) 
{ 
echo $file.'<br>'; 
} 
?>

output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo21.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
rename -- 重命名一个文件或目录
<?php 
rename('demo1.php','demo01.php'); 
if(file_exists('demo01.php')) 
{ 
echo 'file rename success'; 
} 
else 
{ 
echo 'file rename fail'; 
} 
?>

output
file rename success
rmdir -- 删除目录
<?php 
rmdir('123'); 
if(file_exists('123')) 
{ 
echo 'delete file fail'; 
} 
{ 
echo 'delete file success'; 
} 
?>

output
delete file success
PHP 相关文章推荐
PHP 文件上传功能实现代码
Jun 24 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
php注册登录系统简化版
Dec 28 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
PHP使用QR Code生成二维码实例
Jul 07 PHP
第五章 php数组操作
Dec 30 #PHP
第四章 php数学运算
Dec 30 #PHP
第三章 php操作符与控制结构代码
Dec 30 #PHP
第二章 PHP入门基础之php代码写法
Dec 30 #PHP
php 短链接算法收集与分析
Dec 30 #PHP
php的大小写敏感问题整理
Dec 29 #PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 #PHP
You might like
PHP 类相关函数的使用详解
2013/05/10 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
EasyUI创建人员树的实例代码
2017/09/15 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
python随机模块random使用方法详解
2020/02/14 Python
经贸韩语专业大学生职业规划
2014/02/14 职场文书
倡议书格式
2014/08/30 职场文书
活动总结格式
2014/08/30 职场文书
征求意见函
2015/06/05 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
python lambda 表达式形式分析
2022/04/03 Python
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏