PHP编程中八种常见的文件操作方式


Posted in PHP onNovember 19, 2006

文件和目录的操作
PHP处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题
1.打开文件
resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )
$handle = fopen(filename,mode)//打开文件,返回代表此文件的资源的句柄
文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有r\r+\w\w+\a\a+\x\x+\b
在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。
为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
以下是几种打开文件的方式
$fp = @fopen('log.txt',"rb");
$fp = @fopen('../log.txt',"rb");
$fp = @fopen("http://www.runer.com.cn/default.htm","rb");//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项
////////////////////////////代码部分////////////////////////////////////////
$filename1 = "userinfo.txt";//目录下或include_path中存在这个文件
$filename2 = "test.txt";//目录下或include_path并不存在这个文件
$resource1 = fopen($filename1,"rb");
@$resource2 = fopen($filename2,"rb");//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息
if($resource1)
echo "打开文件{$filename1}成功";
if(!@fopen($filename2,"r"))
echo "打开文件{$filename2}不成功";
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------
打开文件userinfo.txt成功

---------------------------------------------------------------------
2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘
使用fclose()关闭文件,
bool fclose ( resource handle )//关闭一个已打开的文件指针
3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据
string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果
如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止
string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 HTML 标记
fgetc()读取单个字符
fread()读取任意二进制数据
////////////////////////////代码部分////////////////////////////////////////
$handle = fopen ("test.jpg", "rb");
$c;
while (!feof($handle)) {
$contents .= @fread($handle, 8192);//循环读取并将其合并为一个大块文件
}
fclose($handle);
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------

---------------------------------------------------------------------
4.判断文件读取的状态
每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,根据fopen函数的mode参数
文件指针最初位于文件的开头(0),或者文件的末尾
feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)
filesize()函数返回文件的大小 5.写入文件
fwrite()函数执行文件写入
////////////////////////////代码部分////////////////////////////////////////
$filename = 'test.txt';
$somec;
// 首先我们要确定文件存在并且可写。
if (is_writable($filename)) {
// 在这个例子里,我们将使用添加模式打开$filename,
// 因此,文件指针将会在文件的开头,
// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。
if (!$handle = fopen($filename, 'a')) {
echo "不能打开文件 $filename";
exit;
}
// 将$somecontent写入到我们打开的文件中。
if (fwrite($handle, $somecontent) === FALSE) {
echo "不能写入到文件 $filename";
exit;
}
echo "成功地将 $somecontent 写入到文件$filename";
fclose($handle);
} else {
}
echo "文件 $filename 不可写";
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------
成功地将 添加这些文字到文件 写入到文件test.txt
---------------------------------------------------------------------
对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数
$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));
6.文件权限和其他信息
is_readable()//判断文件是否可读
is_writeable()//判断文件是否可写
is_writable()//判断文件是否可写
fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)
file_exists()//是否存在这个文件
fileowner()//判断文件所属用户
filegroup()//判断文件所属组
7.删除和重命名文件
unlink()//删除文件
rename()//重命名文件
8.访问目录
目录访问建议使用前向斜线"/",兼容windows和unix系统
basename()//返回不包括路径信息的文件名
dirname()//返回文件名的目录部分
realpath()//接受相对路径,返回文件的绝对路径
pathinfo()//提取给定路径的目录名,基本文件名和扩展名
opendir()//打开目录,返回资源句柄
readdir()//读取目录项
rewinddir()//将读取指针返回开头
closedir()//关闭读取句柄
chdir()//改变当前脚本执行期间的当前工作目录
mkdir()//创建目录
rmdir()删除目录
////////////////////////////代码部分////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------

filename: web : filetype: dir

filename: study : filetype: dir

PHP 相关文章推荐
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
php构造函数与析构函数
Apr 23 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
php实现微信模板消息推送
Mar 30 PHP
PHP初学入门
Nov 19 #PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 #PHP
Windows中安装Apache2和PHP4权威指南
Nov 18 #PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 #PHP
Windows下的PHP5.0详解
Nov 18 #PHP
一些关于PHP的知识
Nov 17 #PHP
PHP4和PHP5共存于一系统
Nov 17 #PHP
You might like
php自定义函数截取汉字长度
2014/05/15 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP常用技巧汇总
2016/03/04 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
js实现批量删除功能
2020/08/27 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python中请不要再用re.compile了
2019/06/30 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
使用python求解二次规划的问题
2020/02/29 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
django使用多个数据库的方法实例
2021/03/04 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
就职演讲稿范文
2014/05/19 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
公务员年终个人总结
2015/02/12 职场文书
党员个人自我评价
2015/03/03 职场文书
公司员工培训管理制度
2015/08/04 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL