2

我需要根据一些规则将多个 NTFS 文件夹的内容合并为一个。这些规则将确保没有冲突的名称。目标是以编程方式完成所有这些工作(c# 和/或 c++)。

我拥有的最简单的解决方案是在目标文件夹中创建 NTFS 链接(或连接),指向源文件夹中的每个文件。

到目前为止,这将起作用,但我遇到的问题是不会出现其他文件并且删除的文件不会消失。

好吧,当然我可以运行一个后台进程(服务)来监听文件系统的源文件夹并在你的飞行中对 NTFS 链接进行适当的修改,但这是要走的路吗?

第一个问题是: 1. 最优雅的方式是什么?2. 我见过多个程序,例如可以将 ZIP 或 ISO 文件的内容挂载到某个 NTFS 文件夹。它们是如何工作的?

4

2 回答 2

3

这是一个让您能够在 Window 中创建用户模式文件系统的项目:Dokan

当您想在 Windows 上创建新的文件系统时,例如改进 FAT 或 NTFS,您需要开发文件系统驱动程序。在 Windows 上开发在内核模式下工作的设备驱动程序非常困难。通过使用 Dokan 库,您可以非常轻松地创建自己的文件系统,而无需编写设备驱动程序。

于 2012-05-23T06:52:03.470 回答
2

可以通过两种方式将某些内容映射到现有文件夹:

  1. 文件系统过滤器驱动程序过滤对现有文件夹的 FS 请求并显示文件夹的修改内容。
  2. 文件系统驱动程序创建一个虚拟文件系统并将其作为连接点安装在 NTFS 驱动器上。

这两种方法都需要相应的内核模式驱动程序。

公开 ZIP(或其他类似文件)的应用程序使用上述方法之一。ISO 文件是磁盘的映像,可以直接作为虚拟磁盘公开,也可以挂载到 NTFS 文件夹。在后一种情况下,需要内核模式磁盘驱动程序。

您可以使用我们的回调文件系统(CBFS) 产品来完成您的特定任务。CBFS 提供了一个预先创建的内核模式驱动程序,让您可以在用户模式下编写与文件系统相关的代码。CBFS 包含的 Mapper 示例几乎可以满足您的需求 - 它将现有文件夹的内容显示为新的虚拟文件系统,您可以将其挂载到 NTFS 文件夹(CBFS 支持这一点)。非商业许可证可用于公共非商业项目。为 .NET、C++、Java 和 Delphi 提供了 API。

于 2012-05-23T06:56:50.837 回答