PHP操作文件方法问答


Posted in PHP onMarch 16, 2007

PHP操作文件问答 
前言: 
PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操作的一些问题收藏吧。 
问:如何新建一个文件? 
答:
1、使用fopen("要建立的文件名","参数"),参数可选w,w+,a,a+ 
2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立 
问:为什么我无法建立文件? 
答:
1、如果你使用了fopen建立文件,是否正确的使用了参数 
2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限 
3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限, 
如果没有请修改权限后尝试 
问:如何将文件读入数组? 
答:使用file函数 
问:如何将文件全部读出? 
答:
1、使用fread($fp); 
2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents(); 
问:如何判断文件是否存在? 
答:使用file_exists();
再问:为什么不使用fopen()来判断呢?
答:原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断 
问:为什么当我读取一个WEB页面的时候出错? 
答:
1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面 
2、确保你要读取的WEB页面可以访问 
问:我如何才能获得文件的相关属性? 
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。 
问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢? 
答:可以的,使用fseek(); 
问:我想在访问文件的时候不允许其他人也访问此文件,怎么办? 
答:
1、你可以采用其他方面程序限制用户接入文件操作的页面 
2、使用flock();详细的参数以及使用方法请参阅手册 
问:如何删除文件内第一行,或指定一行数据? 
答:
PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.dat 文件中数据不止三行) 
<?php 
$filename="test.dat";//定义操作文件 
$delline=3; //要删除的行数 
if(!file_exsits($filename)){ 
die("指定文件未发现!操作中断!"); 

$farray=file($filename);//读取文件数据到数组中 
for($tmpa=0;$Tmpa<count($farray);$Tmpa++){ 
if(strcmp($Tmpa+1,$delline)==0){ 
//判断删除的行 
continue; 

//重新整理后的数据 
$newfp.=$farray[$Tmpa]."\r\n"; 

$fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件 
@fputs($fp,$newfp) or die("文件写入失败"); 
@fclose($fp); 
?> 
以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~ 
问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!! 
答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号 
或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示 
一个不推荐的方法就是去修改php.ini(ISP除外) 
问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据? 
答:建议ISP修改php.ini中的open_basedir进行限制, 
不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。 
问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除?? 
答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!! 
这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候记得chmod文件权限,建议为777 
问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊! 
答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。 
问:如何更改文件名? 
答:rename(); 
问:如何删除文件? 
答:unlink(); exec("del(rm -vf) filename");
注:rm -vf为linux下使用 
问:如何清空文件? 
答:使用fopen(filename,"w");或exec("echo '' > filename"); 
问:如何编辑文件内容? 
答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。 
希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了:) 

PHP 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
谈谈新手如何学习PHP
Dec 14 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
php 字符串替换的方法
Jan 10 PHP
php 发送带附件邮件示例
Jan 23 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 #PHP
PHP中for循环语句的几种变型
Mar 16 #PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 #PHP
使用 eAccelerator加速PHP代码的目的
Mar 16 #PHP
PHP的开发框架的现状和展望
Mar 16 #PHP
用header 发送cookie的php代码
Mar 16 #PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 #PHP
You might like
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
numpy自动生成数组详解
2017/12/15 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
贷款承诺书
2015/01/20 职场文书
今日说法观后感
2015/06/08 职场文书
小学见习报告
2015/06/23 职场文书
村主任当选感言
2015/08/01 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS