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 date与gmdate的获取日期的区别
Feb 08 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
Laravel实现autoload方法详解
May 07 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP4在Windows2000下的安装
2006/10/09 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python 操作MySQL详解及实例
2017/04/30 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python实现爬取并分析电商评论
2020/06/19 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
EJB面试题
2015/07/28 面试题
商场消防管理制度
2014/01/12 职场文书
高中军训感言800字
2014/03/05 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
教师师德演讲稿
2014/05/06 职场文书
商场父亲节活动方案
2014/08/27 职场文书
2015年考研复习计划
2015/01/19 职场文书
审美与表现自我评价
2015/03/09 职场文书
勇敢的心观后感
2015/06/09 职场文书
导游词之安徽巢湖
2019/12/26 职场文书