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

实例1

 代码如下 复制代码

<?php
 
 /*
  文件名: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 "<script language='javascript'>";
      echo "alert("文件上传成功!");";
      echo "</script>";
     }//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 "<script language='javascript'>";
     echo "alert('成功删除文件!');";
     echo "</script>";
    }
    
   }//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

 代码如下 复制代码

<?php
/**
*本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录
* 列出目录里的文件等功能,路径后面别忘了加"/"
*
* @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 "文件建立成功 </br>";
}
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 "<form id='form1' name='form1' action='modi_file.php' method='post'>";
echo "<textarea name=content rows='10'>content</textarea>文件内容";
echo "<p>";
echo "<input type='text' name='filename' value=filename />文件路径<p>";
echo "<input name=ss type=submit value=修改文件内容 />";
echo "</form>";
}

/**
* 本方法用来复制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<count($forder);$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;
      }
}

}
?>

时间: 2024-09-15 10:14:55

php文件操作类(建立,写入,删除,修改,复制,移动,创建目录)的相关文章

PYTHON 文件操作之创建,删除,修改处理

  平时会对一些对系统文件或者目录的进行增删改查,这就需要用到python的一些库,例如os等   对文件进行操作 首先要先引入os Import os 读写一个文件需要打开这个文件 可以用Open(dir,type)来操作,打开一个文件,或者写一个文件,中的目录如果在windows中路径需要用 "\" 双斜杠分隔,也可以用r来保持字符串中目录原路径r'c:/test.txt' file = open("c:\test.txt","w+")  #

Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等

Asp.net(c#)中常用文件操作类封装 包括:移动 复制 删除 上传 下载等 using System; using System.Configuration; using System.Data; using System.IO; using System.Text; using System.Threading; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.Ht

Web项目: Java在部署项目的WebRoot下建立文件夹(附上文件操作类)

public boolean doTest(){ String path="../webapps/FileTest/reportFiles/aa.jsp";//FileTest为自己的项目名 reportFiles为自己建立的文件夹 aa.jsp为自己建立的文件 boolean isDone = false; File file = new File(path); if(file.exists()) throw new RuntimeException("File: &quo

PHP面向对象文件操作类

对象 <?php  /*  文件名:ClassFile.php  功能:面向对象,文件操作类(查看文件,删除文件,上传文件)  作者:感染源  时间:2007-1-11 */  class ClassFile {  private $dir_name;  private $file_name;  private $dh;  //private $file_path;      //构造函数,打开工作文件目录  function __construct($PDirName)  {   $this-

Python文件操作类操作实例代码

  #!/usr/bin/env python 01 #!/usr/bin/env python  02 #coding:utf-8  03 # Author: 酷酷 04 # Purpose: 文件操作类  05 # Created: 2011/1/1  06  07 #声明一个字符串文本  08 poem='''  09 Programming is fun测试  10 When the work is done  11 if you wanna make your work also fu

Python文件操作类操作实例详解_python

本文讲述了Python文件操作类的操作实例,详细代码如下: #!/usr/bin/env python #!/usr/bin/env python #coding:utf-8 # Purpose: 文件操作类 #声明一个字符串文本 poem=''' Programming is fun测试 When the work is done if you wanna make your work also fun: use Python! ''' #创建一个file类的实例,模式可以为:只读模式('r'

java怎么创建目录(删除/修改/复制目录及文件)代码实例_java

复制代码 代码如下: import java.io.*; public class FileOperate {   public FileOperate() {   }   /**    * 新建目录    * @param folderPath String 如 c:/fqf    * @return boolean    */   public void newFolder(String folderPath) {     try {       String filePath = fold

PHP实现文件操作类及文件下载功能的教程

本文实例讲述了PHP实现的文件操作类及文件下载功能.分享给大家供大家参考,具体如下: 文件操作类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

Python实现的ini文件操作类分享_python

类代码: # -*- coding:gbk -*- import ConfigParser, os class INIFILE: def __init__(self, filename): self.filename = filename self.initflag = False self.cfg = None self.readhandle = None self.writehandle = None def Init(self): self.cfg = ConfigParser.Confi