C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

本文实例讲述了C#实现的文件操作封装类。分享给大家供大家参考,具体如下:

最近发现群共享里面有个C# 文件操作封装类,其方法是调用Windows API 来操作的文件的删除、移动、复制、重命名操作。下载下来一试,发现果然不错,特在此记录,以防丢失!

文件操作类代码如下:

using System;
using System.Runtime.InteropServices;
using System.IO;
namespace LxFile
{
  /// <summary>
  /// 文件操作代理,该类提供类似于Windows的文件操作体验
  /// </summary>
  public class FileOperateProxy
  {
    #region 【内部类型定义】
    private struct SHFILEOPSTRUCT
    {
      public IntPtr hwnd;     //父窗口句柄
      public wFunc wFunc;     //要执行的动作
      public string pFrom;    //源文件路径,可以是多个文件,以结尾符号"\0"结束
      public string pTo;     //目标路径,可以是路径或文件名
      public FILEOP_FLAGS fFlags;       //标志,附加选项
      public bool fAnyOperationsAborted;   //是否可被中断
      public IntPtr hNameMappings;      //文件映射名字,可在其它 Shell 函数中使用
      public string lpszProgressTitle;    // 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。
    }
    private enum wFunc
    {
      FO_MOVE = 0x0001,  //移动文件
      FO_COPY = 0x0002,  //复制文件
      FO_DELETE = 0x0003, //删除文件,只是用pFrom
      FO_RENAME = 0x0004 //文件重命名
    }
    private enum FILEOP_FLAGS
    {
      FOF_MULTIDESTFILES = 0x0001,  //pTo 指定了多个目标文件,而不是单个目录
      FOF_CONFIRMMOUSE = 0x0002,
      FOF_SILENT = 0x0044,      // 不显示一个进度对话框
      FOF_RENAMEONCOLLISION = 0x0008, // 碰到有抵触的名字时,自动分配前缀
      FOF_NOCONFIRMATION = 0x10,   // 不对用户显示提示
      FOF_WANTMAPPINGHANDLE = 0x0020, // 填充 hNameMappings 字段,必须使用 SHFreeNameMappings 释放
      FOF_ALLOWUNDO = 0x40,      // 允许撤销
      FOF_FILESONLY = 0x0080,     // 使用 *.* 时, 只对文件操作
      FOF_SIMPLEPROGRESS = 0x0100,  // 简单进度条,意味者不显示文件名。
      FOF_NOCONFIRMMKDIR = 0x0200,  // 建新目录时不需要用户确定
      FOF_NOERRORUI = 0x0400,     // 不显示出错用户界面
      FOF_NOCOPYSECURITYATTRIBS = 0x0800,   // 不复制 NT 文件的安全属性
      FOF_NORECURSION = 0x1000    // 不递归目录
    }
    #endregion 【内部类型定义】
    #region 【DllImport】
    [DllImport("shell32.dll")]
    private static extern int SHFileOperation(ref SHFILEOPSTRUCT lpFileOp);
    #endregion 【DllImport】
    #region 【删除文件操作】
    /// <summary>
    /// 删除单个文件。
    /// </summary>
    /// <param name="fileName">删除的文件名</param>
    /// <param name="toRecycle">指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>操作执行结果标识,删除文件成功返回0,否则,返回错误代码</returns>
    public static int DeleteFile(string fileName, bool toRecycle, bool showDialog, bool showProgress, ref string errorMsg)
    {
      try
      {
        string fName = GetFullName(fileName);
        return ToDelete(fName, toRecycle, showDialog, showProgress, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    /// <summary>
    /// 删除一组文件。
    /// </summary>
    /// <param name="fileNames">字符串数组,表示一组文件名</param>
    /// <param name="toRecycle">指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>操作执行结果标识,删除文件成功返回0,否则,返回错误代码</returns>
    public static int DeleteFiles(string[] fileNames, bool toRecycle, bool showDialog, bool showProgress, ref string errorMsg)
    {
      try
      {
        string fName = "";
        foreach (string str in fileNames)
        {
          fName += GetFullName(str) + "\0";   //组件文件组字符串
        }
        return ToDelete(fName, toRecycle, showDialog, showProgress, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    #endregion 【删除文件操作】
    #region 【移动文件操作】
    /// <summary>
    /// 移动一个文件到指定路径下
    /// </summary>
    /// <param name="sourceFileName">要移动的文件名</param>
    /// <param name="destinationPath">移动到的目的路径</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框</param>
    /// <param name="autoRename">指示当文件名重复时,是否自动为新文件加上后缀名</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码</returns>
    public static int MoveFile(string sourceFileName, string destinationPath, bool showDialog, bool showProgress, bool autoRename, ref string errorMsg)
    {
      try
      {
        string sfName = GetFullName(sourceFileName);
        string dfName = GetFullName(destinationPath);
        return ToMoveOrCopy(wFunc.FO_MOVE, sfName, dfName, showDialog, showProgress, autoRename, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    /// <summary>
    /// 移动一组文件到指定的路径下
    /// </summary>
    /// <param name="sourceFileNames">要移动的文件名数组</param>
    /// <param name="destinationPath">移动到的目的路径</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框</param>
    /// <param name="autoRename">指示当文件名重复时,是否自动为新文件加上后缀名</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常</returns>
    public static int MoveFiles(string[] sourceFileNames, string destinationPath, bool showDialog, bool showProgress, bool autoRename, ref string errorMsg)
    {
      try
      {
        string sfName = "";
        foreach (string str in sourceFileNames)
        {
          sfName += GetFullName(str) + "\0";  //组件文件组字符串
        }
        string dfName = GetFullName(destinationPath);
        return ToMoveOrCopy(wFunc.FO_MOVE, sfName, dfName, showDialog, showProgress, autoRename, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    #endregion 【移动文件操作】
    #region 【复制文件操作】
    /// <summary>
    /// 复制一个文件到指定的文件名或路径
    /// </summary>
    /// <param name="sourceFileName">要复制的文件名</param>
    /// <param name="destinationFileName">复制到的目的文件名或路径</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框</param>
    /// <param name="autoRename">指示当文件名重复时,是否自动为新文件加上后缀名</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常</returns>
    public static int CopyFile(string sourceFileName, string destinationFileName, bool showDialog, bool showProgress, bool autoRename, ref string errorMsg)
    {
      try
      {
        string sfName = GetFullName(sourceFileName);
        string dfName = GetFullName(destinationFileName);
        return ToMoveOrCopy(wFunc.FO_COPY, sfName, dfName, showDialog, showProgress, autoRename, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    /// <summary>
    /// 复制一组文件到指定的路径
    /// </summary>
    /// <param name="sourceFileNames">要复制的文件名数组</param>
    /// <param name="destinationPath">复制到的目的路径</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框</param>
    /// <param name="autoRename">指示当文件名重复时,是否自动为新文件加上后缀名</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常</returns>
    public static int CopyFiles(string[] sourceFileNames, string destinationPath, bool showDialog, bool showProgress, bool autoRename, ref string errorMsg)
    {
      try
      {
        string sfName = "";
        foreach (string str in sourceFileNames)
        {
          sfName += GetFullName(str) + "\0";   //组件文件组字符串
        }
        string dfName = GetFullName(destinationPath);
        return ToMoveOrCopy(wFunc.FO_COPY, sfName, dfName, showDialog, showProgress, autoRename, ref errorMsg);
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    #endregion 【复制文件操作】
    #region 【重命名文件】
    /// <summary>
    /// 重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法
    /// </summary>
    /// <param name="sourceFileName">要复制的文件名</param>
    /// <param name="destinationFileName">复制到的目的文件名或路径</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常</returns>
    [Obsolete("建议使用 Microsoft.VisualBasic.FileSystem.ReName()方法")]
    public static int ReNameFile(string sourceFileName, string destinationFileName, bool showDialog, ref string errorMsg)
    {
      try
      {
        SHFILEOPSTRUCT lpFileOp = new SHFILEOPSTRUCT();
        lpFileOp.wFunc = wFunc.FO_RENAME;
        lpFileOp.pFrom = GetFullName(sourceFileName) + "\0\0";     //将文件名以结尾字符"\0\0"结束
        lpFileOp.pTo = GetFullName(destinationFileName) + "\0\0";
        lpFileOp.fFlags = FILEOP_FLAGS.FOF_NOERRORUI;
        if (!showDialog)
          lpFileOp.fFlags |= FILEOP_FLAGS.FOF_NOCONFIRMATION;   //设定不显示提示对话框
        lpFileOp.fAnyOperationsAborted = true;
        int n = SHFileOperation(ref lpFileOp);
        if (n == 0)
          return 0;
        string tmp = GetErrorString(n);
        errorMsg = string.Format("{0}({1})", tmp, sourceFileName);
        return n;
      }
      catch (Exception ex)
      {
        errorMsg = ex.Message;
        return -200;
      }
    }
    /// <summary>
    /// 利用Microsoft.VisualBasic.FileSystem.ReName()方法实现
    /// </summary>
    /// <param name="filePath"></param>
    /// <param name="newFileName"></param>
    public static void ReNameFile(string filePath, string newFileName)
    {
      try
      {
        string extensName = Path.GetExtension(filePath);
        string newName = newFileName + extensName;
        Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(filePath, newName);
      }
      catch (Exception ex)
      {
        throw ex;
      }
    }
    #endregion 【重命名文件】
    /// <summary>
    /// 删除单个或多个文件
    /// </summary>
    /// <param name="fileName">删除的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开</param>
    /// <param name="toRecycle">指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>操作执行结果标识,删除文件成功返回0,否则,返回错误代码</returns>
    private static int ToDelete(string fileName, bool toRecycle, bool showDialog, bool showProgress, ref string errorMsg)
    {
      SHFILEOPSTRUCT lpFileOp = new SHFILEOPSTRUCT();
      lpFileOp.wFunc = wFunc.FO_DELETE;
      lpFileOp.pFrom = fileName + "\0";    //将文件名以结尾字符"\0"结束
      lpFileOp.fFlags = FILEOP_FLAGS.FOF_NOERRORUI;
      if (toRecycle)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_ALLOWUNDO; //设定删除到回收站
      if (!showDialog)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_NOCONFIRMATION;   //设定不显示提示对话框
      if (!showProgress)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_SILENT;   //设定不显示进度对话框
      lpFileOp.fAnyOperationsAborted = true;
      int n = SHFileOperation(ref lpFileOp);
      if (n == 0)
        return 0;
      string tmp = GetErrorString(n);
      //.av 文件正常删除了但也提示 402 错误,不知道为什么。屏蔽之。
      if ((fileName.ToLower().EndsWith(".av") && n.ToString("X") == "402"))
        return 0;
      errorMsg = string.Format("{0}({1})", tmp, fileName);
      return n;
    }
    /// <summary>
    /// 移动或复制一个或多个文件到指定路径下
    /// </summary>
    /// <param name="flag">操作类型,是移动操作还是复制操作</param>
    /// <param name="sourceFileName">要移动或复制的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开</param>
    /// <param name="destinationFileName">移动到的目的位置</param>
    /// <param name="showDialog">指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框</param>
    /// <param name="showProgress">指示是否显示进度对话框</param>
    /// <param name="autoRename">指示当文件名重复时,是否自动为新文件加上后缀名</param>
    /// <param name="errorMsg">反馈错误消息的字符串</param>
    /// <returns>返回移动操作是否成功的标识,成功返回0,失败返回错误代码</returns>
    private static int ToMoveOrCopy(wFunc flag, string sourceFileName, string destinationFileName, bool showDialog, bool showProgress, bool autoRename, ref string errorMsg)
    {
      SHFILEOPSTRUCT lpFileOp = new SHFILEOPSTRUCT();
      lpFileOp.wFunc = flag;
      lpFileOp.pFrom = sourceFileName + "\0";     //将文件名以结尾字符"\0\0"结束
      lpFileOp.pTo = destinationFileName + "\0\0";
      lpFileOp.fFlags = FILEOP_FLAGS.FOF_NOERRORUI;
      lpFileOp.fFlags |= FILEOP_FLAGS.FOF_NOCONFIRMMKDIR; //指定在需要时可以直接创建路径
      if (!showDialog)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_NOCONFIRMATION;   //设定不显示提示对话框
      if (!showProgress)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_SILENT;   //设定不显示进度对话框
      if (autoRename)
        lpFileOp.fFlags |= FILEOP_FLAGS.FOF_RENAMEONCOLLISION; //自动为重名文件添加名称后缀
      lpFileOp.fAnyOperationsAborted = true;
      int n = SHFileOperation(ref lpFileOp);
      if (n == 0)
        return 0;
      string tmp = GetErrorString(n);
      errorMsg = string.Format("{0}({1})", tmp, sourceFileName);
      return n;
    }
    /// <summary>
    /// 获取一个文件的全名
    /// </summary>
    /// <param name="fileName">文件名</param>
    /// <returns>返回生成文件的完整路径名</returns>
    private static string GetFullName(string fileName)
    {
      FileInfo fi = new FileInfo(fileName);
      return fi.FullName;
    }
    /// <summary>
    /// 解释错误代码
    /// </summary>
    /// <param name="n">代码号</param>
    /// <returns>返回关于错误代码的文字描述</returns>
    private static string GetErrorString(int n)
    {
      if (n == 0) return string.Empty;
      switch (n)
      {
        case 2:
          return "系统找不到指定的文件。";
        case 7:
          return "存储控制块被销毁。您是否选择的“取消”操作?";
        case 113:
          return "文件已存在!";
        case 115:
          return "重命名文件操作,原始文件和目标文件必须具有相同的路径名。不能使用相对路径。";
        case 117:
          return "I/O控制错误";
        case 123:
          return "指定了重复的文件名";
        case 116:
          return "The source is a root directory, which cannot be moved or renamed.";
        case 118:
          return "Security settings denied access to the source.";
        case 124:
          return "The path in the source or destination or both was invalid.";
        case 65536:
          return "An unspecified error occurred on the destination.";
        case 1026:
          return "在试图移动或拷贝一个不存在的文件.";
        case 1223:
          return "操作被取消!";
        default:
          return "未识别的错误代码:" + n;
      }
    }
  }
}

附:完整实例代码点击此处本站下载

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • C#进行文件读写、创建、复制、移动、删除的方法

    本文实例讲述了C#进行文件读写.创建.复制.移动.删除的方法.分享给大家供大家参考.具体分析如下: 1.文件夹创建.移动.删除 //创建文件夹 Directory.CreateDirectory(Server.MapPath("a")); Directory.CreateDirectory(Server.MapPath("b")); Directory.CreateDirectory(Server.MapPath("c")); //移动b到a D

  • C#程序中创建、复制、移动、删除文件或文件夹的示例

    创建文件或文件夹 您可通过编程方式在您的计算机上创建文件夹.子文件夹和子文件夹中的文件,并将数据写入文件. public class CreateFileOrFolder { static void Main() { string folderName = @"c:\Top-Level Folder"; string pathString = System.IO.Path.Combine(folderName, "SubFolder"); string pathSt

  • C# 复制与删除文件的实现方法

    C# 复制与删除文件的实现方法 1.首先是复制文件 首先打开我们的对话框获得文件路径,当然也可以直接编写路径 private void BtnAddFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {

  • C# 对文件与文件夹的操作包括删除、移动与复制

    在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类.文件夹(Folder)是只在Windows操作系统中使用的名词.在操作系统的理论中,人们更习惯于使用目录(Directory)这个名词.或许微软为了有朝一日将.Net移植到其他的操作系统中(实际上也有很多人也在做着这个项目),所以还是以Directory来命名操作文件夹的类. File类和Directory类都是静态类.使用它们的好处

  • C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    本文实例讲述了C#实现的文件操作封装类.分享给大家供大家参考,具体如下: 最近发现群共享里面有个C# 文件操作封装类,其方法是调用Windows API 来操作的文件的删除.移动.复制.重命名操作.下载下来一试,发现果然不错,特在此记录,以防丢失! 文件操作类代码如下: using System; using System.Runtime.InteropServices; using System.IO; namespace LxFile { /// <summary> /// 文件操作代理,

  • Python文件操作函数用法实例详解

    这篇文章主要介绍了Python文件操作函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 字符编码 二进制和字符之间的转换过程 --> 字符编码 ascii,gbk,shit,fuck 每个国家都有自己的编码方式 美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为gbk , 美国电脑无法识别中国电脑写的程序 , 中国电脑无法识别美国电脑写的程序 现在硬盘中躺着 ascii/gbk/shit/fuck 编码的文件,

  • c# 文件操作(移动,复制,重命名)

    文件移动 public static void MoveFolder(string sourcePath, string destPath) { if (Directory.Exists(sourcePath)) { if (!Directory.Exists(destPath)) { //目标目录不存在则创建 try { Directory.CreateDirectory(destPath); } catch (Exception ex) { throw new Exception("创建目标

  • php实现的XML操作(读取)封装类完整实例

    本文实例讲述了php实现的XML操作(读取)封装类.分享给大家供大家参考,具体如下: <?xml version="1.0" encoding="utf-8" standalone="no"?> <CustomizationSetting version='1.0' > <!-- 各通用配置信息,作为Settings子节点,方便统一解析 --> <!-- AgentSettings 由网页定制生成,默认无

  • PHP封装的XML简单操作类完整实例

    本文实例讲述了PHP封装的XML简单操作类.分享给大家供大家参考,具体如下: xml_dom.php封装类文件: <?php /** * Class xml_dom * nodeType: 1 XML_ELEMENT_NODE(元素类型) 2 XML_ATTRIBUTE_NODE 3 XML_TEXT_NODE 4 XML_CDATA_SECTION_NODE 5 XML_ENTITY_REFERENCE_NODE 6 XML_ENTITY_NODE 7 XML_PROCESSING_INSTR

  • php文件操作相关类实例

    本文实例讲述了php文件操作相关类.分享给大家供大家参考.具体如下: <?php class file_dir { function check_exist($filename) //检查目录或文件是否存在 { if(file_exists($filename)) { return true; } else return false; } function create_dir($dirname,$mode=0777) // 一次只能创建一级目录 { if(is_null($dirname) |

  • PHP实现视频文件上传完整实例

    本文以一个完整实例的形式实现了视频文件上传的功能.虽然是比较基础的应用,仍有一定的参考价值.分享给大家供大家参考之用.具体方法如下: 首先,对PHP来说视频也属于文件,我们利用这个道理,可以通过与上传普通文件类似的方式实现上传PHP视频文件.不同的是视频文件一般较大,上传时间长,而php配置文件也对上传文件的大小有限制. 如果需要更好地用PHP实现文件上传,还是推荐使用FTP上传方式. 一.PHP处理代码如下: <?php //设置最多允许10个文件同时上传 define('MUILTI_FIL

  • C#实现的xml操作类完整实例

    本文实例讲述了C#实现的xml操作类,分享给大家供大家参考,具体如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System

  • C#实现的ACCESS数据库操作类完整实例

    本文实例讲述了C#实现的ACCESS数据库操作类.分享给大家供大家参考,具体如下: 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! using System; using System.Text; using System.Collections; using System.Collections.Specialized; using System.D

  • PHP zip压缩包操作类完整实例

    本文实例讲述了PHP zip压缩包操作类.分享给大家供大家参考,具体如下: <?php /** * Zip 文件包工具 * * @author wengxianhu * @date 2013-08-05 */ class ZipFolder { protected $zip; protected $root; protected $ignored_names; public function __construct(){ $this->zip = new ZipArchive; } /** *

随机推荐