PHP 创建文件(文件夹)以及目录操作代码


Posted in PHP onMarch 04, 2010

一、目录操作
首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出:

<?php 
$base_dir="filelist/"; 
$fso=opendir($base_dir); 
echo $base_dir."<hr/>"; 
while($flist=readdir($fso)){ 
echo $flist."<br/>"; 
} 
closedir($fso) 
?>

这是讲返回文件目录下面的文件已经目录的程序(0文件将返回false).
有时候需要知道目录的信息,可以使用dirname($path)和basename($path),分别返回路径的目录部分和文件名名称部分,可用disk_free_space($path)返回查看空间剩余空间.
创建命令:
mkdir($path,0777):0777是权限码,在非window下可用umask()函数设置.
rmdir($path):将删除路径在$path的文件.
二、文件操作
● 新建文件
首先,确定你所要新建文件所在的目录权限; 建议设备为777。然后,新建文件的名称建议使用绝对路径。
<?php 
$filename="test.txt"; 
$fp=fopen("$filename", "w+"); //打开文件指针,创建文件 
if ( !is_writable($filename) ){ 
die("文件:" .$filename. "不可写,请检查!"); 
} 
//fwrite($filename, "anything you want to write to $filename."; 
fclose($fp); //关闭指针

● 读文件
首先是一个文件看能不能读取(权限问题),或者存在不,我们可以用is_readable函数获取信息.:
<?php 
$file = 'dirlist.php'; 
if (is_readable($file) == false) { 
die('文件不存在或者无法读取'); 
} else { 
echo '存在'; 
} 
?>

判断文件存在的函数还有file_exists(下面演示),但是这个显然无is_readable全面.,当一个文件存在的话可以用
<?php 
$file = "filelist.php"; 
if (file_exists($file) == false) { 
die('文件不存在'); 
} 
$data = file_get_contents($file); 
echo htmlentities($data); 
?>

但是file_get_contents函数在较低版本上不支持,可以先创建文件的一个句柄,然后用指针读取全部:
还有一种方式,可以读取二进制的文件:
$data = implode('', file($file));

● 写文件
和读取文件的方式一样,先看看是不是能写:
<?php 
$file = 'dirlist.php'; 
if (is_writable($file) == false) { 
die("You have no right to write!"); 
} 
?>

能写了的话可以使用file_put_contents函数写入:
<?php 
$file = 'dirlist.php'; 
if (is_writable($file) == false) { 
die('我是鸡毛,我不能'); 
} 
$data = '我是可鄙,我想要'; 
file_put_contents ($file, $data); 
?>

file_put_contents函数在php5中新引进的函数(不知道存在的话用function_exists函数先判断一下)低版本的php无法使用,可以使用如下方式:
$f = fopen($file, 'w'); 
fwrite($f, $data); 
fclose($f);

替换之.
写文件的时候有时候需要锁定,然后写:
function cache_page($pageurl,$pagedata){ 
if(!$fso=fopen($pageurl,'w')){ 
$this->warns('无法打开缓存文件.');//trigger_error 
return false; 
} 
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定 
$this->warns('无法锁定缓存文件.');//trigger_error 
return false; 
} 
if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式 
$this->warns('无法写入缓存文件.');//trigger_error 
return false; 
} 
flock($fso,LOCK_UN);//释放锁定 
fclose($fso); 
return true; 
}

● 复制,删除文件
php删除文件非常easy,用unlink函数简单操作:
<?php 
$file = 'dirlist.php'; 
$result = @unlink ($file); 
if ($result == false) { 
echo '蚊子赶走了'; 
} else { 
echo '无法赶走'; 
} 
?>

即可.
复制文件也很容易:
<?php 
$file = 'yang.txt'; 
$newfile = 'ji.txt'; # 这个文件父文件夹必须能写 
if (file_exists($file) == false) { 
die ('小样没上线,无法复制'); 
} 
$result = copy($file, $newfile); 
if ($result == false) { 
echo '复制记忆ok'; 
} 
?>

可以使用rename()函数重命名一个文件夹.其他操作都是这几个函数组合一下就能实现的.
● 获取文件属性
我说几个常见的函数:
获取最近修改时间:
<?php 
$file = 'test.txt'; 
echo date('r', filemtime($file)); 
?>

返回的说unix的时间戳,这在缓存技术常用.
相关的还有获取上次被访问的时间fileatime(),filectime()当文件的权限,所有者,所有组或其它 inode 中的元数据被更新时间,fileowner()函数返回文件所有者
$owner = posix_getpwuid(fileowner($file));
(非window系统),ileperms()获取文件的权限,
<?php 
$file = 'dirlist.php'; 
$perms = substr(sprintf('%o', fileperms($file)), -4); 
echo $perms; 
?>

filesize()返回文件大小的字节数:
<?php 
// 输出类似:somefile.txt: 1024 bytes 
$filename = 'somefile.txt'; 
echo $filename . ': ' . filesize($filename) . ' bytes'; 
?>

获取文件的全部信息有个返回数组的函数stat()函数:
<?php 
$file = 'dirlist.php'; 
$perms = stat($file); 
var_dump($perms); 
?>
PHP 相关文章推荐
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
如何让CI框架支持service层
Oct 29 PHP
php实现的用户查询类实例
Jun 18 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 #PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 #PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 #PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 #PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 #PHP
PHP 引用文件技巧
Mar 02 #PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 #PHP
You might like
phpmail类发送邮件函数代码
2012/02/20 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
jquery.post用法示例代码
2014/01/03 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
新护士岗前培训制度
2014/02/02 职场文书
就业意向书范文
2014/04/01 职场文书
买房协议书
2014/04/11 职场文书
普通话演讲稿
2014/09/03 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
会计工作检讨书
2015/02/19 职场文书
婚宴致辞
2015/07/28 职场文书
2016年母亲节寄语
2015/12/04 职场文书
电力安全学习心得体会
2016/01/18 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL