热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php文件操作类(建立,写入,删除,修改,复制,移动,创建目录)-PHP源码

php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,大家可参考参考。
php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,大家可参考参考。

实例1

代码如下


/*
文件名:ClassFile.php
功能:面向对象,文件操作类(查看文件,删除文件,上传文件)
作者:感染源
时间:2007-1-11
*/

class ClassFile
{
private $dir_name;
private $file_name;
private $dh;
//private $file_path;


//构造函数,打开工作文件目录
function __construct($PDirName)
{
$this->dir_name = $PDirName;
if(is_dir($this->dir_name))

//打开目录
if($this->dh = opendir($this->dir_name) or dir('路径错误,请重新检查路径!'));
}//function __construct();


//关闭文件目录
function __destruct()
{
//关闭目录
closedir($this->dh);
}//function __destruct();


//向当前文件夹添加文件,同时检查是否有重名的文件
function AddFile($temp_file)
{
//读取目录
while($this->file_name = readdir($this->dh))
{
if($this->file_name==$temp_file) //检查是否和已存在的文件重名
{
echo '文件重名,请更改文件名...';
exit;
}
else
{
//将临时文件复制到当前目录中
$up_id = copy($temp_file,"$this->dir_name/$temp_file");
if(!$up_id)
{
echo '文件上传失败,请重新再传...';
exit;
}
else
{
unlink($temp_file); //删除临时文件

echo "";
}//if
}//if
}//while
}//function AddFile();


//删除文件
function DelFile($del_file)
{
if(is_file($del_file))
{
//$path = "$this->dir_name/$del_file";
if(unlink($del_file))
{
echo "";
}

}//if
}//function DelFile();


//读取文件
function Read_File()
{
$result_file = array();
$i = 0;
while($this->file_name = readdir($this->dh))
{
if($this->file_name=='.'||$this->file_name=='..')
{}
else
{
$result_file[$i++] = "$this->dir_name/$this->file_name";
}//if

}//while
return $result_file; //返回文件名数组
}//function Read_File()
}//Class ClassFile
?>

实例2

代码如下

/**
*本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录
* 列出目录里的文件等功能,路径后面别忘了加"/"
*
* @author 路人郝
* @copyright myself
*
*/
class fileoperate
{
var path;// 文件路径
var name;//文件名
var result;//对文件操作后的结果

/**
* 本方法用来在path目录下创建name文件
*
* @param string path
* @param string name
*/
function creat_file(path,name)//建立文件
{
filename=path.name;
if (file_exists(filename))
{
echo "文件已经存在,请换个文件名";
}
else
{
if (file_exists(path))
{
touch(name);
rename(name,filename);
echo "文件建立成功
";
}
else{
echo "目录不存在,请检查";
}
}
}

/**
* 本方法用来写文件,向path路径下name文件写入content内容,bool为写入选项,值为1时
* 接着文件原内容下继续写入,值为2时写入后的文件只有本次content内容
*
* @param string_type path
* @param string_type name
* @param string_type content
* @param bool_type bool
*/
function write_file(path,name,content,bool) //写文件
{
filename=path.name;
if (bool==1) {
if (is_writable(filename)) {
handle=fopen(filename,'a');
if (!handle) {
echo "文件不能打开或文件不存在";
exit;
}
result=fwrite(handle,content);
if (!result) {
echo "文件写入失败";
}
echo "文件写入成功";
fclose(handle);
}
else echo "文件不存在";
}
if (bool==2) {
if (!file_exists(filename)) {
this->creat_file(path,name);
handle=fopen(filename,'a');
if (fwrite(handle,content));
echo "文件写入成功";

}
else {
unlink(filename);
this->creat_file(path,name);
this->write_file(path,name,content,1);
echo "文件修改成功";
}
}

}

/**
* 本方法删除path路径下name文件
*
* @param string_type path
* @param string_type name
*/
function del_file(path,name){ //删除文件
filename=path.name;

if (!file_exists(filename)) {
echo "文件不存在,请确认路径是否正确";
}
else {
if (unlink(filename)){
echo "文件删除成功";
}
else echo "文件删除失败";
}

}

/**
* 本方法用来修改path目录里name文件中的内容(可视)
*
* @param string_type path
* @param string_type name
*/
function modi_file(path,name){ //文件修改
filename=path.name;
handle=fopen(filename,'r+');
cOntent=file_get_contents(filename);
echo "";
echo "文件内容";
echo "

";
echo "文件路径

";
echo "";
echo "";
}

/**
* 本方法用来复制name文件从spath到dpath
*
* @param string name
* @param string spath
* @param string dpath
*/
function copy_file(name,spath,dpath) //文件复制
{
filename=spath.name;
if (file_exists(filename)) {
handle=fopen(filename,'a');
copy(filename,dpath.name);
if (file_exists(dpath.name))
echo "文件复制成功";
else echo "文件复制失败";
}
else echo "文件不存在";
}

/**
* 本方法把name文件从spath移动到path路径
*
* @param string_type path
* @param string_type dirname
* @param string_type dpath
*/
function move_file(name,spath,dpath) //移动文件
{
filename=spath.name;
if (file_exists(filename)) {
result=rename(filename,dpath.name);
if (result==false or !file_exists(dpath))
echo "文件移动失败或目的目录不存在";
else
echo "文件移动成功";
}
else {
echo "文件不存在,无法移动";
}
}
}
?>

实例3

这个比较高级了,不但可以实现文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,还可以实现移动目录, copy,替换等操作。

代码如下

class FSC{


// 函数名: getfilesource
// 功能: 得到指定文件的内容
// 参数: $file 目标文件
// test passed
function getfilesource($file){
if($fp=fopen($file,'r')){
$filesource=fread($fp,filesize($file));
fclose($fp);
return $filesource;
}
else
return false;
}

// 函数名: writefile
// 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖
// 参数: $file -- 新文件名
// $source 文件内容
//test passed
function writefile($file,$source){
if($fp=fopen($file,'w')){
$filesource=fwrite($fp,$source);
fclose($fp);
return $filesource;
}
else
return false;
}

// 函数名: movefile
// 功能: 移动文件
// 参数: $file -- 待移动的文件名
// $destfile -- 目标文件名
// $overwrite 如果目标文件存在,是否覆盖.默认是覆盖.
// $bak 是否保留原文件 默认是不保留即删除原文件
// test passed
function movefile($file,$destfile,$overwrite=1,$bak=0){
if(file_exists($destfile)){
if($overwrite)
unlink($destfile);
else
return false;
}
if($cf=copy($file,$destfile)){
if(!$bak)
return(unlink($file));
}
return($cf);
}

// 函数名: movedir
// 功能: 这是下一涵数move的附助函数,功能就是移动目录

function movedir($dir,$destdir,$overwrite=1,$bak=0){
@set_time_limit(600);
if(!file_exists($destdir))
FSC::notfate_any_mkdir($destdir);
if(file_exists($dir)&&(is_dir($dir)))
{
if(substr($dir,-1)!='/')$dir.='/';
if(file_exists($destdir)&&(is_dir($destdir))){
if(substr($destdir,-1)!='/')$destdir.='/';
$h=opendir($dir);
while($file=readdir($h)){
if($file=='.'||$file=='..')
{
continue;
$file="";
}
if(is_dir($dir.$file)){
if(!file_exists($destdir.$file))
FSC::notfate_mkdir($destdir.$file);
else
chmod($destdir.$file,0777);
FSC::movedir($dir.$file,$destdir.$file,$overwrite,$bak);
FSC::delforder($dir.$file);
}
else
{
if(file_exists($destdir.$file)){
if($overwrite)unlink($destdir.$file);
else{
continue;
$file="";
}
}
if(copy($dir.$file,$destdir.$file))
if(!$bak)
if(file_exists($dir.$file)&&is_file($dir.$file))
@unlink($dir.$file);
}
}
}
else
return false;
}
else
return false;
}

// 函数名: move
// 功能: 移动文件或目录
// 参数: $file -- 源文件/目录
// $path -- 目标路径
// $overwrite -- 如是目标路径中已存在该文件时,是否覆盖移动
// -- 默认值是1, 即覆盖
// $bak -- 是否保留备份(原文件/目录)

function move($file,$path,$overwrite=1,$bak=0)
{
if(file_exists($file)){
if(is_dir($file)){
if(substr($file,-1)=='/')$dirname=basename(substr($file,0,strlen($file)-1));
else $dirname=basename($file);
if(substr($path,-1)!='/')$path.='/';
if($file!='.'||$file!='..'||$file!='../'||$file!='./')$path.=$dirname;
FSC::movedir($file,$path,$overwrite,$bak);
if(!$bak)FSC::delforder($file);
}
else{
if(file_exists($path)){
if(is_dir($path))chmod($path,0777);
else {
if($overwrite)
@unlink($path);
else
return false;
}
}
else
FSC::notfate_any_mkdir($path);
if(substr($path,-1)!='/')$path.='/';
FSC::movefile($file,$path.basename($file),$overwrite,$bak);
}
}
else
return false;
}

// 函数名: delforder
// 功能: 删除目录,不管该目录下是否有文件或子目录,全部删除哦,小心别删错了哦!
// 参数: $file -- 源文件/目录
//test passed

function delforder($file) {
chmod($file,0777);
if (is_dir($file)) {
$handle = opendir($file);
while($filename = readdir($handle)) {
if ($filename != "." && $filename != "..")
{
FSC::delforder($file."/".$filename);
}
}
closedir($handle);
return(rmdir($file));
}
else {
unlink($file);
}
}

// 函数名: notfate_mkdir
// 功能: 创建新目录,这是来自php.net的一段代码.弥补mkdir的不足.
// 参数: $dir -- 目录名


function notfate_mkdir($dir,$mode=0777){
$u=umask(0);
$r=mkdir($dir,$mode);
umask($u);
return $r;
}

// 函数名: notfate_any_mkdir
// 功能: 创建新目录,与上面的notfate_mkdir有点不同,因为它多了一个any,即可以创建多级目录
// 如:notfate_any_mkdir("abc/abc/abc/abc/abc")
// 参数: $dirs -- 目录名


function notfate_any_mkdir($dirs,$mode=0777)
{
if(!strrpos($dirs,'/'))
{
return(FSC::notfate_mkdir($dirs,$mode));
}else
{
$forder=explode('/',$dirs);
$f='';
for($n=0;$n {
if($forder[$n]=='') continue;
$f.=((($n==0)&&($forder[$n]<>''))?(''):('/')).$forder[$n];
if(file_exists($f)){
chmod($f,0777);
continue;
}
else
{
if(FSC::notfate_mkdir($f,$mode)) continue;
else
return false;
}
}
return true;
}
}

}
?>


推荐阅读
author-avatar
手机用户2502876217
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有