php关于文件的创建和修改
1.目录的操作
首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出
<?php
$base_dir=”filelist/” ; //定义需要操作的文件
$fso=opendir($base_dir) ; //使用opendir打开对应路径,并返回对应的资源类型
Echo $base_dir.”<br />”; //进行输出查看
While($flist=readdir($fso))
{
Echo $flist.”<br />”
}
Closedir($fso); //防止内存的溢出,最后需要进行关闭
?>
有时间需要知道目录的信息,可以使用dirname($path)和basename($path),分别返回路径的目录部分和文件的名称部分,可用disk_free_space($path)返回查看文件剩余的空间。
创建文件夹命令:
Mkdir($path,0777): 0777是文件创建时候的权限,这个命令仅仅适用于unix系统
Rmdir($path); 删除路径为$path的文件
2.关于文件的操作
2.1 新建文件
首先。要求确定你所要新建文件所在目录权限,建议设置为0777.然后,新建文件的名称建议适用绝对路径
<?php
$filename=”text.txt”;
$fp=fopen(“$filename”,”w+”);
If(!is_writable($filename))
{
Die(“文件:”.filename.”不可写,请检查!”);
}
Fwrite($filename,”anything you want to write to $filename”);
Fclose($fp); //关闭内存的暂用
?>
2.2读取文件
首先要确定文件是否拥有读取的权限(或则读取的文件是否存在),我们可以用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 htmllentities($data); //需要测试这个函数是什么意思;
还有一种方式,可以读取二进制文件
$data=inplode(“”,file($file)); //需要测试
?>
2.3写文件
和读取文件的方式一样,先看看是不是能写
<?php
$file=”dirlist.php”;
If(is_writable($file)==false)
{
Die(“文件没有写入的权限”);
}
?>
能够写入的话使用的是file_put_contents函数写入:
<?
$file=”dirlist.php”;
If(is_writable($file)==false)
{
Die(“我是鸡毛,我不能。”);
}
$date=”我是写入内容”;
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(“无法打开缓存文件。”); //错误提醒
Return false;
}
If(!loack($fos,LOCK_EX))
{
//lock_nb ,排它型锁定
$this->warns(“无法锁定缓存文件。”);//错误提醒
Return false
}
If(!fwrite($fso,$pagedata))
{
//写入字节流,$serialize写入其他的格式
$this->warns(“无法写入缓存文件”); //错误提醒
Return false;
}
Flock($fso,LOCK_UN);//解放锁定
Fclose($fso);
Return true ;
}
2.4复制,删除文件
Php删除文件是非常简单的,用unlink函数简单操作:
<?php
$file=”dirlist.php”;
$result=@unlink($file);
If($result==false)
{
Echo “文件已经删除”;
}else{
Echo “文件删除失败”;
}
?>
可以使用rename()函数重命名一个文件夹,其他的炒作都是这几个函数组合一下就能够实现
2.5获取文件属性
我这个说几个常见的幻术
获取最近修改时间
<?php
$file=”text.txt”;
Echo date(“r’,filemtime($file));
?>
返回的说unix的时间戳,这个在缓存技术常用
相关的还有获取上次被访问的时间fileatime(),filectime()当前文件的权限,所有则,所有组或其他inode中的元素被更新时间,fileowner()函数返回文件所有者;
$owner=posix_getpuid(flieowner($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);
?>