`
touchinsert
  • 浏览: 1335685 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

封装原来的DirectoryInfo类,添加事件,可以代替FileSystemWatcher 类

 
阅读更多
using System;
using System.IO;

//封装原来的DirectoryInfo类,添加事件,可以代替FileSystemWatcher 类
public class DirectoryInfoNotify
{
public DirectoryInfoNotify(string path)
{
internalDirInfo = new DirectoryInfo(path);
}

private DirectoryInfo internalDirInfo = null;
public event EventHandler AfterCreate;
public event EventHandler AfterCreateSubDir;
public event EventHandler AfterDelete;
public event EventHandler AfterMoveTo;
protected virtual void OnAfterCreate()
{
EventHandler afterCreate = AfterCreate;
if (afterCreate != null)
{

afterCreate(this, new EventArgs());
}
}

protected virtual void OnAfterCreateSubDir()
{
EventHandler afterCreateSubDir = AfterCreateSubDir;
if (afterCreateSubDir != null)
{
afterCreateSubDir(this, new EventArgs());
}
}

protected virtual void OnAfterDelete()
{
EventHandler afterDelete = AfterDelete;
if (afterDelete != null)
{
afterDelete(this, new EventArgs());
}
}

protected virtual void OnAfterMoveTo()
{
EventHandler afterMoveTo = AfterMoveTo;
if (afterMoveTo != null)
{
afterMoveTo(this, new EventArgs());
}
}

// Event firing members
//激活事件的方法
public void Create()
{

internalDirInfo.Create();
OnAfterCreate();
}

public DirectoryInfoNotify CreateSubdirectory(string path)
{
DirectoryInfo subDirInfo = internalDirInfo.CreateSubdirectory(path);
OnAfterCreateSubDir();

return (new DirectoryInfoNotify(subDirInfo.FullName));
}

public void Delete(bool recursive)
{
internalDirInfo.Delete(recursive);
OnAfterDelete();
}

public void Delete()
{
internalDirInfo.Delete();
OnAfterDelete();
}

public void MoveTo(string destDirName)
{
internalDirInfo.MoveTo(destDirName);
OnAfterMoveTo();
}

// Nonevent firing members
public string FullName
{
get { return (internalDirInfo.FullName); }
}
public string Name
{
get { return (internalDirInfo.Name); }
}
public DirectoryInfoNotify Parent
{
get { return (new DirectoryInfoNotify(internalDirInfo.Parent.FullName)); }
}
public DirectoryInfoNotify Root
{
get { return (new DirectoryInfoNotify(internalDirInfo.Root.FullName)); }
}

public override string ToString()
{
return (internalDirInfo.ToString());
}
}

分享到:
评论

相关推荐

    C#中文件和目录相关操作 DirectoryInfo 类

    `FileInfo` 和 `DirectoryInfo` 类都可以通过多种构造函数来创建实例,例如可以通过一个文件路径或目录路径来创建。 - **`FileInfo`**: - 可以通过文件路径来创建 `FileInfo` 实例。 ```csharp FileInfo ...

    C# File、FileInfo、Directory、DirectoryInfo

    例如,你可以先使用DirectoryInfo创建一个新目录,然后使用FileInfo在该目录下创建文件,最后使用File类的方法读写文件内容。同时,这些类也支持异步操作,提高了程序的性能,特别是在处理大量文件时。 总的来说,...

    C#使用Directoryinfo类获得目录信息和属性的方法

    本文实例讲述了C#使用Directoryinfo类获得目录信息和属性的方法。分享给大家供大家参考。具体如下: using System; using System.IO; class MainClass { static void Main(string[] args) { FileInfo file = new ...

    C#中File,Directory,FileInfo,DirectoryInfo区别与应用.pdf

    【C#中的File, Directory, FileInfo, DirectoryInfo类详解】 在C#编程中,File, Directory, FileInfo, DirectoryInfo类是.NET框架提供的用于管理和操作文件和目录的常用类。这些类提供了丰富的功能,允许开发者进行...

    C的常用方法

    虽然`DirectoryInfo`类本身不直接支持文件系统事件监听,但可以通过与其他类结合使用,如`FileSystemWatcher`,来监控目录的添加、删除、重命名等事件。 7. **性能优化** 当处理大量文件或目录时,避免一次性加载...

    在C#中给文件分类

    例如,`DirectoryInfo`可以用来获取指定路径的目录信息,而`FileInfo`则用于处理单个文件的信息。 2. **遍历文件**:通过`DirectoryInfo.GetFiles()`或`GetAllFiles()`方法获取目录下的所有文件。可以使用通配符...

    .NET操作共享目录

    另外,`System.IO`命名空间中的`FileSystemWatcher`类非常有用,它可以监控指定目录的变化,如文件的创建、删除、重命名等事件。这对于实时监控共享目录的动态非常方便。 在域环境中,我们还需要了解Windows身份...

    WinForm程序设计与实践第5章.pptx

    DirectoryInfo 类的功能与 Directory 类相似,不同的是 DirectoryInfo 类是一个实例类,所有方法都是实例方法。 4. 文件和目录类的使用 File 类和 FileInfo 类用于创建、删除和移动文件,通过属性获取特定文件的...

    .net连接共享文件夹以及文件监听

    要连接到共享文件夹,可以使用`System.IO.DirectoryInfo`类,如下所示: ```csharp using System.IO; string sharePath = @"\\ServerName\ShareName"; DirectoryInfo directoryInfo = new DirectoryInfo(sharePath...

    C# 批量修改文件名

    总的来说,利用C#中的File类、Directory类、FileInfo类和DirectoryInfo类,开发者可以轻松实现批量修改文件名的需求,从而提高文件管理的效率。在编写这类程序时,应考虑异常处理、性能优化以及用户界面设计,以提供...

    C#常用的42个类

    C#类是面向对象编程的基础,它们提供了封装、继承和多态等特性,使得代码更加模块化和可复用。下面将详细介绍C#中42个常用的类,以及它们在实际开发中的应用。 1. `System.Object`:所有C#类的基类,包含一些基本的...

    DirectoryInfo引用一个相对目录的实例

    在讨论“DirectoryInfo引用一个相对目录的实例”时,首先需要了解的是,`DirectoryInfo`类是.NET框架中用于表示文件系统上的一个目录的类。该类位于`System.IO`命名空间下,并提供了一系列用于获取目录信息、创建、...

    C#监视文件和文件夹系统变化情况

    结合`System.IO`命名空间中的其他类,如`FileInfo`和`DirectoryInfo`,可以构建出强大的文件系统操作和管理工具。在实际编程中,根据具体业务需求灵活运用这些知识,可以极大地提高工作效率和应用程序的智能化程度。

    C#获取指定文件夹下的所有文件夹

    8. **文件系统监视**:如果需要实时监控文件夹变化,可以使用FileSystemWatcher类,它可以监听指定目录的创建、删除、重命名等事件。 9. **异步操作**:在大型文件系统中,获取所有子目录可能是一个耗时的操作。...

    c#系统监控软件,可以监控全盘文件及其子文件夹__(0521).rar

    除了使用FileSystemWatcher,还可以结合其他C#类库如`DirectoryInfo`和`FileInfo`来获取文件和目录的详细信息,或者通过`Task.Delay`来实现定时检查,但这样不会提供实时监控。 在设计系统监控软件时,还需要考虑...

    C# 文件及目录操作类

    在.NET框架中,C#语言提供了丰富的类库用于处理文件和目录操作,这些类主要集中在System.IO命名空间中。本文将深入探讨C#中的文件及目录操作类,并介绍如何使用它们来实现文件的新建、修改、删除、复制和移动等功能...

    vc.net 过滤指定目录下的子目录

    除了遍历,你还可以利用`FileSystemWatcher`类实时监控文件系统的变化,包括新子目录的创建。设置好监控路径和过滤条件后,当满足条件的子目录被创建时,`FileSystemWatcher`会触发事件。 四、异步处理 在处理大量...

    C#文件读写路径总结

    C#文件读写路径总结 ...1. 对文件系统的监视:使用 FileSystemWatcher 类。 C#文件读写路径总结涵盖了路径操作、文件和目录操作、读写文件、文件系统监视等方面的知识点,为开发者提供了详细的参考。

Global site tag (gtag.js) - Google Analytics