• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

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

作者:Rising_Sun 字体:[增加 减小] 来源:互联网 时间:2017-05-28

Rising_Sun 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,crh2c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28C#.net编程创建Access文件和Excel文件的方法详解
  • 2017-05-28c#用for语句输出一个三角形的方法
  • 2017-05-28学习Winform文本类控件(Label、Button、TextBox)
  • 2017-05-28WPF/Silverlight实现图片局部放大的方法分析
  • 2017-10-11C# WinForm中实现快捷键自定义设置实例
  • 2017-05-28获得.net控件的windows句柄的方法
  • 2017-05-28c#友好显示日期 c#日期datetime使用方法
  • 2017-05-28C#实现自定义FTP操作封装类实例
  • 2017-05-28C#字符串常见操作总结详解
  • 2017-05-28c#中禁用windows的任务管理器的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • WPF MVVM制作发送短信小按钮
    • 学会使用C#异常
    • C#数据库的修改
    • 用Newtonsoft将json串转为对象的方法(详解)
    • C#中Decimal类型截取保留N位小数并且不进行四舍五入操作
    • c#和javascript函数相互调用示例分享
    • C#禁用双击窗体图标关闭窗体的方法
    • C# Redis学习系列(二)Redis基本设置
    • C#绘制曲线图的方法
    • C#实现Access通用访问类OleDbHelper完整实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有